gpt4 book ai didi

c# - 通过 DataAnnotation 强制外键列名不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 11:15:21 25 4
gpt4 key购买 nike

好的,我有两个类:“计划”和“ Material ”。一个计划有 0..1 个 Material ,一个 Material 可以包含在多个计划中。创建我的数据库时,自动生成的列名为 Material_MaterialId,我希望它被命名为 MaterialId

我的“计划”类:

[Column("MaterialId")]
public virtual Material Material { get; set; }

我的“ Material ”类:

public int MaterialId { get; set; }

但它似乎什么也没做。

最佳答案

你应该使用这个:

计划类

public virtual Material Material { get; set; }

public int? MaterialId { get; set; } /* it prompt clr create foreign key MatherialId which referenced to MatherialId class of Matherial */

Material 类

public int MaterialId { get; set; }

已更新

完整解决方案

实体:

namespace MvcApplicationTest.Models
{
public class Material
{
public int MaterialId { get; set; }
public int Name { get; set; }
}

public class Plan
{
public int PlanId { get; set; }
public int Name { get; set; }

//full navigation property
public virtual Material Material { get; set; }
public int? MaterialId { get; set; }
//

}

public class TestContext : DbContext
{
public DbSet<Material> Materials { get; set; }
public DbSet<Plan> Plans { get; set; }
}
}

global.asax 中的一些初始化:

var context = new TestContext();
context.Database.CreateIfNotExists();

结果应该是这样的:

enter image description here

你的名字:

 [ForeignKey("MaterialFK")]
public virtual Material MyMaterial { get; set; } //your name
public int? MaterialFK { get; set; } //your name

关于c# - 通过 DataAnnotation 强制外键列名不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12834293/

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