gpt4 book ai didi

c# - Entity Framework Code First 一对多可选,具有流畅的映射

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:19 24 4
gpt4 key购买 nike

我有以下 C# 模型,其中一家公司位于给定的时区。

[Table("Company")]
public class Company
{
[Key]
public int Id { get; set; }

[StringLength(255)]
[Required]
public string Name { get; set; }

[Required]
public TimeZone TimeZone { get; set; }

}

[Table("TimeZone")]
public class TimeZone
{
[Key]
public int Id { get; set; }

[StringLength(255)]
public string Name { get; set; }

}

在我预先存在的 SQL 数据库中,TimeZone 表是一个查找表,旨在供公司表和任何其他需要 TimeZone 的内容引用。因此,一对多关系中的外键在公司中。

CREATE TABLE [dbo].[Company](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](500) NOT NULL,
[TimeZoneId] [int] NOT NULL REFERENCES dbo.TimeZone(Id))

CREATE TABLE [dbo].TimeZone(
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](500) NOT NULL)

我如何使用 EF Fluent API 映射他(我使用的是 EF 6)以便我可以 Company.TimeZone.Name ?

最佳答案

尝试这样的事情:

public class CompanyContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder builder)
{
builder.Entity<Company>()
.HasRequired(c => c.TimeZone)
.WithMany()
.HasForeignKey(c => c.TimeZoneId);

base.OnModelCreating(builder);
}

}

[Table("Company")]
public class Company
{
[Key]
public int Id { get; set; }

public int TimeZoneId { get; set; }

[StringLength(255)]
[Required]
public string Name { get; set; }

// this will be navigation property
public TimeZone TimeZone { get; set; }

}

[Table("TimeZone")]
public class TimeZone
{
[Key]
public int Id { get; set; }

[StringLength(255)]
public string Name { get; set; }

}

关于c# - Entity Framework Code First 一对多可选,具有流畅的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24473255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com