【发布时间】:2015-04-10 19:13:55
【问题描述】:
我有两个表,都具有复合主键。 两者在另一个表中具有共同的一个主键和一个外键。
问题是当我创建迁移时,它会弄乱外键。
我必须使用数据注释。
例子:
public class City
{
[Key, Column(Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public string CityCode { get; set; }
[Key, Column(Order = 2)]
public string CompanyCode { get; set; }
public string Description { get; set; }
[ForeignKey("CompanyCode")]
public virtual Company Company { get; set; }
}
public class PostCode
{
[Key, Column(Order = 0)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public string Code { get; set; }
[Key, Column(Order = 1)]
public string CompanyCode { get; set; }
public string Description { get; set; }
public string CityCode { get; set; }
[ForeignKey("CompanyCode")]
public virtual Company Company { get; set; }
[ForeignKey("CityCode, CompanyCode")]
public virtual City City { get; set; }
}
- PostCode 和 City 有一个复合主键(代码,CompanyCode)。
- PostCode 具有表 City 的外键(CityCode、CompanyCode)。
问题在于 CompanyCode 是 主键的一部分,同时也是 City 的复合外键的一部分.
当我说它弄乱了外键时,我的意思是:
CONSTRAINT [FK_dbo.PostCodes_dbo.Companies_CompanyCode] FOREIGN KEY ([CompanyCode]) REFERENCES [dbo].[Companies] ([CompanyCode]) ON DELETE CASCADE,
CONSTRAINT [FK_dbo.PostCodes_dbo.Cities_CompanyCode_CityCode] FOREIGN KEY ([CompanyCode], [CityCode]) REFERENCES [dbo].[Cities] ([CityCode], [CompanyCode])
在第二个约束中,它用 CityCode 引用 CompanyCode,用 CompanyCode 引用 CityCode。
我在互联网上找不到任何这样的例子。
我哪里错了?
提前致谢。
编辑 1
City 和 Company 之间有一个简单的主键 CompanyCode。 PostCodes 和 Company 也是如此。
【问题讨论】:
-
你能简单分享一下你的逻辑吗?
City和Company之间存在什么样的关系? -
@octavioccl 好的,在Edit 1中写过,请再看一遍。
标签: entity-framework asp.net-mvc-5 entity-framework-6 foreign-key-relationship composite-primary-key