0

我试图为一个名为的表添加一个新的存储库类,PersonFieldGroupDomain但这就是它的样子:

在此处输入图像描述

所以基本上我们这个表只有两个字段。所以我去了实体框架模型设计器,我无法使用从数据库中更新模型将此表添加到设计器,它甚至不可见。但是,当我看到其他依赖于它的表时,我只能将其视为导航属性。

所以,我需要向它添加一条新记录,但由于我无法像为其他人那样直接从上下文中访问它,所以我尝试使用“附加”方法添加它,如下所示:

var fieldGroupSet = FieldGroupSets.Single(t=>t.FieldGroupSetId == 1);
fieldGroupSet.PersonFieldGroupDomainReference.Attach(Domains.Single(t=>t.DomainId == 2));

并且这段代码不起作用。至少我使用我在实际项目中使用的相同上下文程序集在 LinqPad 上对其进行了测试。

这篇文章似乎在谈论我可以使用http://msdn.microsoft.com/en-us/data/jj592676.aspx的一些方法,但它们似乎都不适合我。

任何工作想法将不胜感激。

4

1 回答 1

1

看起来这个表只是一个连接表。EF 会将这些隐藏在设计器视图中。请注意,如果您向表中添加代理键或任何内容,您将开始在设计器中将其视为一个实体。

要使用它,它应该很简单

var fieldGroupSet = FieldGroupSets.Single(t => t.FieldGroupSetId == 1);
var domain = Domains.Single(t => t.DomainId == 2);
fieldGroupSet.Domain = domain;
context.SaveChanges();

由OP编辑:

我的注释:很抱歉编辑您的答案,但为了将其标记为答案,我需要输入我使用的实际代码,该代码符合您的逻辑:

var fieldGroupSet = FieldGroupSets.Single(t=>t.FieldGroupSetId == 1);
var domain = Domains.Single(t => t.DomainId == 3);
fieldGroupSet.PersonFieldGroupDomain = domain;
SaveChanges();

在上面的代码中,由于 PersonFieldGroupDomain 是一个导航属性,所以它直接进入,所以当你通过属性到达它时,Domain它就是类型。如上面的代码所示,我直接使用现有对象设置它,保存更改后,更改将在数据库中持久化并且有效!DomainfieldGroupSet.PersonFieldGroupDomainDomain

于 2013-08-07T16:38:31.323 回答