【发布时间】:2011-03-24 08:04:34
【问题描述】:
我是 EF 4 的新手,这就是我目前所做的:
- 根据我的数据库创建一个 edmx 文件
- 为我的对象创建代码生成 (POCO)。现在我有一个 model1.tt,展开后我可以看到我的所有课程
- 根据 IRepository 为每个类创建一个存储库
现在,我正在使用两个对象,A 和 B。对象 A 具有 B 类型的属性。在我的 winform 中,我有一个包含 B 类型对象的组合。当按下保存按钮时,一个新的实例创建类 A 并设置所有属性。对象B属性设置如下:
objectA.myObjectB = (objectB)cmbBObjects.selectedItem;
然后我为 objectA 创建一个存储库并调用 save 方法。在这个保存方法中,我有这个代码±
public bool Save(ObjectA obj)
{
using(MyContext context = new MyContext())
{
context.objectAs.AddObject(obj);
context.SaveChanges();
}
}
这段代码确实在数据库中保存了一个新条目,但它也为对象 B 创建了一条新记录!我不想要这个,因为对象 B 已经存在于数据库中! (我从组合框中选择了这个)。
这就是我填充组合框的方式:
在 objectB 存储库中:
public IList<ObjectB> GetAll()
{
using(MyContext context = new MyContext())
{
IList<ObjectB> objects = context.objectBs.ToList();
return objects;
}
}
以我的形式:
ObjectBRepository rep = new ObjectBRepository();
IList<ObjectB> objects = rep.GetAll;
cmbBObjects.Datasource = objects;
// etc..
所以我的问题是,在不为对象 B 创建新记录的情况下,我必须如何保存对象 A?
【问题讨论】:
标签: c# .net entity-framework entity-framework-4