我有以下数据库:
CREATE TABLE [dbo].[Application] (
[ApplicationId] INT IDENTITY (1, 1) NOT NULL,
[Name] NVARCHAR (MAX) NULL,
[DataVersion] ROWVERSION,
CONSTRAINT [PK_dbo.Application] PRIMARY KEY CLUSTERED ([ApplicationId] ASC)
);
CREATE TABLE [dbo].[TestAccount] (
[TestAccountId] INT IDENTITY (1, 1) NOT NULL,
[ApplicationId] INT,
[Name] NVARCHAR (MAX) NOT NULL,
[DataVersion] ROWVERSION,
CONSTRAINT [PK_dbo.TestAccount] PRIMARY KEY CLUSTERED ([TestAccountId] ASC),
CONSTRAINT fk_AccountApplication FOREIGN KEY (ApplicationId) REFERENCES Application(ApplicationId)
);
我的数据库有很多表,但我只是包含这些。
有人可以告诉我如何使用EF Fluent API来建模fk_AccountApplication关系吗?
如何使用数据注释执行此操作。那更容易吗?什么是最正常的方式 人们建立这些关系。使用注释还是使用Fluent API?
答案 0 :(得分:1)
我个人觉得用数据注释更容易做到这一点,但我相信其他人会不同意我(对每个人都不同)。
就数据注释而言,以下是您将如何做到这一点:
您的Application对象应包含以下内容:
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ApplicationID { get; set; }
public virtual ICollection<TestAccount> TestAccounts { get; set; }
然后您的TestAccount应包含以下2个属性:
[ForeignKey("Application")]
public int ApplicationID { get; set; }
public virtual Application Application { get; set; }
这应该告诉EF他们之间有一个FK链接