EntityCollections设置EntityReference.EntityKey以填充Collection

遇到entity framework问题。 我一直在用EntityKey填充EntityReferences,以便在我添加实体引用时不再需要查询数据库。 现在我想为一个Association(EntityCollection)做同样的事情,但我不知道从哪里开始。 下面是我想要做的细节

CREATE TABLE [dbo].[Foo]( [FooId] [int] IDENTITY(1,1) NOT NULL, [FooName] [nvarchar](50) NOT NULL, ) CREATE TABLE [dbo].[Bar]( [BarId] [int] IDENTITY(1,1) NOT NULL, [BarName] [nvarchar](50) NOT NULL, CONSTRAINT [PK_Bar] PRIMARY KEY CLUSTERED ) CREATE TABLE [dbo].[FooBar]( [FooId] [int] NOT NULL, [BarId] [int] NOT NULL, CONSTRAINT [PK_FooBar] PRIMARY KEY CLUSTERED ) ALTER TABLE [dbo].[FooBar] WITH CHECK ADD CONSTRAINT [FK_FooBar_Bar] FOREIGN KEY([BarId]) REFERENCES [dbo].[Bar] ([BarId]) ALTER TABLE [dbo].[FooBar] CHECK CONSTRAINT [FK_FooBar_Bar] ALTER TABLE [dbo].[FooBar] WITH CHECK ADD CONSTRAINT [FK_FooBar_Foo] FOREIGN KEY([FooId]) REFERENCES [dbo].[Foo] ([FooId]) ALTER TABLE [dbo].[FooBar] CHECK CONSTRAINT [FK_FooBar_Foo] 

现在当我将它映射到entityFramework时,我得到了2个具有多对多关系的实体(Foo和Bar)。

我想要做的是添加一个新的Foo实体与5条相关联我有条的ID但我不想查询数据库以获得所有5条。 我宁愿只设置一个entityKey。

这可能吗?

例如:

 Foo myFoo = new Foo(); Foo.Name = "Hello" Foo.Bars = // now I would like to just populate a set of EntityKeys for the EntityCollection 

只需附加一个存根实体 :

 var bar = new Bar { Id = barId }; Context.AttachTo("Bars", bar); myFoo.Bars.Add(bar); Context.SaveChanges(); 

没有DB查询那里bar

重要提示: 将关系添加到myFoo 之前,必须附加bar ,以便EF知道您没有尝试插入新的Bar

在这种情况下,我认为你不能只设置一个EntityKey,因为FooBar连接本身就是(或应该是)一个实体。 您必须为要在Foos和Bars之间创建的每个多对多关系创建一个新的FooBar。