gpt4 book ai didi

entity-framework-core - 使用外键关系创建的 EF Core 2 重复列

转载 作者:行者123 更新时间:2023-12-02 02:55:57 25 4
gpt4 key购买 nike

我正在尝试使用 EF 核心 2 代码优先方法添加迁移。问题是,具有外键关系的实体是使用末尾带有“1”后缀的外键 id 和具有相同名称但末尾没有 1 的冗余列创建的,这不是外键。

示例是我的 2 个类,Store 和 StoreVisit,如下所示:

店铺

[Table("Store")]
public class Store
{
public Store()
{
StoreVisits = new HashSet<StoreVisit>();
}
[Key]
public int StoreId { get; set; }

[StringLength(30)]
public string ShopName { get; set; }

[StringLength(50)]
public string ShopKeeper { get; set; }

public string ContactNo { get; set; }

[StringLength(70)]
public string Address { get; set; }

[StringLength(20)]
public string Street { get; set; }

[StringLength(50)]
public string City { get; set; }

public IEnumerable<StoreVisit> StoreVisits { get; set; }
}

店铺访问
[Table("StoreVisit")]
public class StoreVisit
{

[Key]
public int StoreVisitId { get; set; }

[StringLength(50)]
public string Location { get; set; }

[StringLength(50)]
public string Notes { get; set; }

[DataType(DataType.Time)]
public DateTime StartTime { get; set; }

[DataType(DataType.Time)]
public DateTime EndTime { get; set; }

public Store Store { get; set; }

}

Visit 类是在数据库中创建的,列如下图所示:

enter image description here

如您所见,StoreVisit 表具有列“StoreId1”(实际外键)和“StoreId”(非外键)列。

我什至配置了与 Fluent API 的关系如下:
            modelBuilder.Entity<Store>()
.HasMany(c => c.StoreVisits)
.WithOne(e => e.Store)
.IsRequired();

有人可以帮忙吗。

最佳答案

需要在类上定义外键。

[Table("StoreVisit")]
public class StoreVisit
{

[Key]
public int StoreVisitId { get; set; }

public int StoreId { get; set; }

[StringLength(50)]
public string Location { get; set; }

[StringLength(50)]
public string Notes { get; set; }

[DataType(DataType.Time)]
public DateTime StartTime { get; set; }

[DataType(DataType.Time)]
public DateTime EndTime { get; set; }

public Store Store { get; set; }

}

将外键引用添加到 Fluent API 也会有害。
modelBuilder.Entity<Store>()
.HasMany(c => c.StoreVisits)
.WithOne(e => e.Store)
.HasForeignKey(e => e.StoreId)
.IsRequired();

关于entity-framework-core - 使用外键关系创建的 EF Core 2 重复列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49457994/

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