每次我想将db-entity分配给另一个时,我都会创建一个新的。
使用Entity Framework,首先编写代码,创建一个与Angular UI断开连接的restfull webapi服务。对于每个数据库实体,我还有一个Data obj来将结果数据发送到UI。
让我们考虑下一个例子
DB ENTITIES:
Client()
{
int Id {get;set;}
string Name {get;set;}
CountriesDropDown Contry { get; set; }
}
CountriesDropDown()
{
int Id {get;set;}
string Description {get;set;}
}
CountriesDropDown是DB的固定列表,我不想创建新行或编辑它们,我只是想将它们分配给客户端。
是否有任何方法可以在ENTITY FRAMEWORK中设置这个DROPDOWN表,始终是EntityState.Unchanged ??
THEN:
SAVE()
{
.....
.....
if(Client.Contry != null)
{
Client.Contry.Id = ClientData.Contry.Id;
}
else
{ //INSTEAD OF ASSIGN AN EXISTING COUNTRY IT CREATES A DUPLICATE ONE
Client.Contry = new CountriesDropDown();
Client.Contry.Id = ClientData.Contry.Id;
Client.Contry.Description = ClientData.Contry.Description;
}
}
答案 0 :(得分:1)
这有两种方法。
首先在Client
课程中有一个CountryId
字段,并通过ForeignKeyAttribute
将其与Country
对象相关联
然后只需设置Id属性
Client.CountryId = clientData.CountryId
在查询数据时,您仍然可以访问导航属性
其次通过db上下文检索现有实体并附加
Client.Country = dbContext.Countries.Find(clientData.CountryId)