public class ObjectA
{
public Guid Id {get; set;}
public virtual ObjectB Objectb {get; set;}
}
public class ObjectB
{
public Guid Id {get; set;}
public Guid ObjectAId {get; set;}
public virtual ObjectA ObjectA {get; set;}
}
我没有运气让关系正确。创建EF 4.3关系不对
modelBuilder.Entity<ObjectA>()
.HasRequired(p => p.ObjectB)
.WithRequiredPrincipal()
.WillCascadeOnDelete(false);
两个关系:
- Object.ObjectA/ObjectA.Id
- ObjectA.Id/ObjectB.Id
我怎么EF停止创造的关系#2?这是不正确的,不是我想要的。
错:
modelBuilder.Entity<ObjectA>().HasRequired(x => x.Objectb).WithRequiredPrincipal(x => x.ObjectA);
ALTER TABLE [dbo].[ObjectBs] WITH CHECK ADD CONSTRAINT [FK_ObjectBs_ObjectAs_Id] FOREIGN KEY([Id])
REFERENCES [dbo].[ObjectAs] ([Id])
GO
几乎右:
modelBuilder.Entity<ObjectA>().HasOptional(x => x.Objectb).WithOptionalPrincipal(x => x.ObjectA);
ALTER TABLE [dbo].[ObjectBs] WITH CHECK ADD CONSTRAINT [FK_ObjectBs_ObjectAs_ObjectA_Id] FOREIGN KEY([ObjectA_Id])
REFERENCES [dbo].[ObjectAs] ([Id])
GO
一个附加列被添加,所以我最终ObjectAId和ObjectA_Id在对象B。
modelBuilder.Entity<ObjectA>().HasOptional(x => x.Objectb).WithOptionalPrincipal(x => x.ObjectA).Map(x => x.MapKey("ObjectAId"));
引发异常:类型中的每个属性名称必须是唯一的。属性名称'ObjectAId'已经被定义。
我也试过,EF仍然做错了。 – cb3431 2012-04-24 23:00:55