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