Fur*_*kan 9 c# dao entity-framework-5
在我的上一个项目中,我使用了Entity Framework 5 Code First.我完成了我的项目,但在开发过程中遇到了很多痛苦.
我试着解释下面的痛苦:
我的数据访问逻辑层有几个数据类,如Product,ProductCategory,Order,Company,Manufacturer等......每个类都有一些其他类的引用.例如,Product实例具有ProductCategory属性.
在我的数据访问对象类的Add和Update方法中,我在上下文中将每个属性的状态(基本类型除外)设置为Unchanged或Modified.下面是一些dao类的更新方法的一部分:
context.Entry(entity).State = System.Data.EntityState.Modified;
if (entity.Category != null)
context.Entry(entity.Category).State = System.Data.EntityState.Unchanged;
if (entity.Manufacturer != null)
context.Entry(entity.Manufacturer).State = System.Data.EntityState.Unchanged;
foreach (var specificationDefinition in entity.SpecificationDefinitions)
{
context.Entry(specificationDefinition).State = System.Data.EntityState.Unchanged;
foreach (var specificationValue in specificationDefinition.Values)
{
context.Entry(specificationValue).State = System.Data.EntityState.Unchanged;
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码是这样的.我的一些添加或更新方法大约有30行代码.我认为我做错了什么,添加或更新实体应该不是那么痛苦但是当我没有设置对象的状态时,我要么在数据库中得到异常或重复的条目.我是否真的必须设置映射到数据库的每个属性的状态?
Sla*_*uma 11
您可以通过以下方式替换代码:
context.Products.Attach(entity);
context.Entry(entity).State = System.Data.EntityState.Modified;
Run Code Online (Sandbox Code Playgroud)
这是相同的(除非相关实体已经附加到另一个状态中的上下文而不是Unchanged之前)是Attach将对象图中的所有相关实体entity 包括在状态中的上下文中Unchanged.将状态设置为Modified之后entity仅将产品的状态(不是相关实体)Unchanged更改为Modified.
| 归档时间: |
|
| 查看次数: |
29620 次 |
| 最近记录: |