To nie jest tak ważne, ale próbuję dowiedzieć się, co mi mówi i czy jest to uzasadnione ostrzeżenie? Czy ktoś może mi wyjaśnić ten błąd w prostych słowach?CA1001 Ostrzeżenie Visual Studio 2012 Analiza kodu. Co to znaczy?
CA1001 Rodzaje jednorazowych, które są właścicielami pól powinny być jednorazowe
Wdrożenie IDisposable na 'MemVoteManager', ponieważ tworzy członków o IDisposable następujących typów: 'CongressDBEntities. Jeśli wcześniej dostarczono "MemVoteManager" , dodawanie nowych członków, które implementują IDisposable do tego typu, jest uważane za przełomową zmianę w stosunku do istniejących konsumentów .
public class MemVoteManager : AbstractDataManager, IMemVoteManager
{
private CongressDBEntities context = new CongressDBEntities();
public int AddMemVote(tMemVoteScore mvs)
{
//Insert Model
context.tMemVoteScores.Add(mvs);
context.SaveChanges();
int newPK = mvs.MemVoteScoresID;
//Update funky column ID with PK as well
var memVoteItem = (from m in context.tMemVoteScores
where m.MemVoteScoresID == newPK
select m).SingleOrDefault();
memVoteItem.ID = memVoteItem.MemVoteScoresID;
context.SaveChanges();
return newPK;
}
Trudno będzie wyjaśnić, co to ostrzeżenie mówi, aby zrobić bez powtarzania ostrzeżenia. Ponieważ twój typ ma pole, w którym konstruuje obiekt i przechowuje do niego, gdzie ten obiekt implementuje IDisposable, powinieneś zaimplementować IDisposable również na swoim typie, usuwając obiekt w tym polu. Tak właściwie brzmi ostrzeżenie. Część z podziałem na zmiany polega na tym, że żaden istniejący kod, który używa twojego typu, nie zostałby zbudowany z myślą o "Rozmieszczaniu", a tym samym o przełomowej zmianie. –