gpt4 book ai didi

c# - EF代码优先,单向多对多关系不是由第二个实体的Id

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

这是我第一次在 Stack 中提问,我已经搜索了很多,但运气不佳。

我正在使用 EF 4,我想先使用代码创建多对多关系。我遇到的问题是该应用程序已本地化并且目前有两种语言(西类牙语和英语)因此,我创建了两个实体:从业者和专长:

[Table("Practitioners")]
public class PractitionerModel
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public virtual int Id { get; set;}
public ICollection<SpecialityModel> Specialities { get; set; }
}

[Table("Specialities")]
public class SpecialityModel
{
public virtual int Id { get; set;}
public string Name { get; set; }
public int Code { get; set; }
}

我希望一个 Practitioner 有很多专业,并且希望“映射”通过代码而不是 Id 发生因为有两个具有相同代码的专业,例如:Ginecology 和 Ginecologia"它们是相同的专业,具有不同 ID 的代码 12。

想法是数据库中的数据应该如下所示:

-----------------                                        ------------------------------------------
| Practitioner | | Specialities |
---------------- ------------------------------ ------------------------------------------
| Id = 10 |-- | PractitionerToSpecialities | -- | Id = 1, Code = 12, Name = "Ginecology" |
---------------- | ------------------------------ | ------------------------------------------
--| PracId = 10, SpecCode = 12 |----- | Id = 2, Code = 12, Name = "Ginecologia"|
----------------------------- ---------------------------------------- --

有什么方法可以通过 CodeFirst 实现这一点?

最佳答案

全局化不应以这种方式影响您的数据库设计。

如果每个专业有一个专业记录(因此关系可以通过 id),然后相应的资源(在 .NET 资源管理器中或作为专业表中的字段)用于显示名称会更好用不同的语言。

就是说,尝试这样的事情:

[Table("Practitioners")]
public class PractitionerModel
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public virtual int Id { get; set;}

[ForeignKey("Specialties")]
public virtual int Code {get; set; }
public ICollection<SpecialityModel> Specialities { get; set; }
}

[Table("Specialities")]
public class SpecialityModel
{
public virtual int Id { get; set;}
public string Name { get; set; }
public int Code { get; set; }
}

关于c# - EF代码优先,单向多对多关系不是由第二个实体的Id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19859814/

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