0
這個問題是像我previous one here!ASP.NET C#實體框架 - 如何正確更新外鍵? - 第2部分
這裏有東西2部分我學會了,希望是真的:
- 不要使用數據實體上下文爲靜態
- 處置數據上下文之後 - 通常使用後一個時間
- 參數傳遞到UPDATING實體法,而不是實體 (我會解釋,並在這裏我十字路口謊言)
這是我修改後的代碼:
public class ManagerBase
{
private NoxonEntities _entities = null;
public NoxonEntities Entities
{
get
{
if (_entities == null)
_entities = new NoxonEntities();
return _entities;
}
}
}
//Managers uses ManagerBase class as a Base class
MemberManager currentMemberManager = new MemberManager();
currentMemberManager.Save(memberId, username, password, languageId);
//MemberManager class
public Member Save(long memId, string username, string password, int langId)
{
using (var Context = base.Entities)
{
var Data = Context.Member.First(c => c.Id == memId);
Data.Username = username;
Data.Password = password;
Data.Language = Context.Language.First(c => c.Id == langId); //Gets the foreign entity
Context.SaveChanges();
return Data;
}
}
這工作也不例外。但通常這個SAVE方法是由接口實現的方法。所以,我寧願通過一個對象值SAVE方法比通過所有字段像上面一樣。 比如我想使用這樣的:
//Member is an EntityFramework Object which was created during EF Model when I added by visual studio
//Filter is the method that returns an EntityFramework Object from EF (and eventually database) with given some arguments
//SomeArguments could be MemberId = 2
Member modifiedMember = currentMemberManager.Filter(someArguments);
modifiedMember.UserName = "newvalue";
currentMemberManager.Save(modifiedMember);
在保存方法也許我可以用這樣的:
public Member Save(Member modifiedMember)
{
using (var Context = base.Entities)
{
var Data = Context.Member.First(c => c.Id == modifiedMember.Id);
Data.Username = modifiedMember.Username;
Data.Password = modifiedMember.Password;
Data.Language = Context.Language.First(c => c.Id == modifiedMember.LanguageId); //Gets the foreign entity
Context.SaveChanges();
return Data;
}
}
如果我要利用這個就像一個正上方,我我認爲我不應該使用傳遞對象EF Object,相反,也許我應該使用其他一些我將寫入的類來將參數映射到EF成員實體。
第一個問題:這是一個好方法嗎?
public class MyMember
{
public long Id { set; get; }
public string Username { set; get; }
public string Password { set; get; }
public int LanguageId { set; get; }
}
MyMember.Username = "NewValue";
MyMember.LanguageId = 4; //4 as in new value
currentMemberManager.Save(MyMember); //As you can see MyMember is not an EF Entity in here
但是由於已經有一些書寫的代碼,這會花費很長時間。
第二個問題:我不能使用EF實體對象OUTSIDE並修改它那裏保存IN的MemberManager類?
再次,非常感謝您的幫助提前。
請,任何人.. –
我有這個鏈接的答案。 [http://stackoverflow.com/questions/12389704/how-to-update-entity][1] [1]:http://stackoverflow.com/questions/12389704/如何對更新實體 –