Joh*_*ell 13 c# sql entity-framework entity-framework-4 self-tracking-entities
我正在使用EF 4 STE来为Attachment对象建模.该附件包含了名称,描述,日期,以及最重要的数据(byte[]).为了优化加载,我不想在绝对必要之前检索Data属性,即当用户Download从客户端点击时.
为了遵循这种方法,我使用了这里描述的表拆分技术.我将附件表拆分为附件(名称,描述,日期)和附件数据(数据).这是我EF模型中的一对一关系.直到我尝试删除一切都很正常附件没有AttachmentData(即attachment.AttachmentData == null).我得到以下异常:
遇到无效数据.缺少必需的关系.检查StateEntries以确定约束违规的来源.
我看到了类似的帖子,但我似乎无法使用STE和ApplyChanges扩展方法.
现在我的数据访问代码很简单:我调用上下文ApplyChanges()后跟SaveChanges().
我尝试了一个简单的删除SQL函数,并将其映射到两个实体,并实际工作; 但它打破了插入物.我似乎无法将所有属性的插入函数映射到两个实体.
关于我可以尝试的其他一些选项的任何想法?Attachment和AttachmentData之间的关系可以是可选的吗?当我将其设为1到0+时,我得到一个映射错误Their primary keys may collide.
对任何建议开放.
谢谢!
解决方案与链接问题类似,但您必须使用STE的特定功能 - ApplyChanges:
context.Attachments.ApplyChanges(att);
if (context.ObjectStateManager.GetObjectStateEntry(att).State == EntityState.Deleted)
{
var data = new AttachmentData() {Id = att.Id};
context.AttachmentDataSet.Attach(data);
context.AttachmentDataSet.DeleteObject(data);
}
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4091 次 |
| 最近记录: |