2

スタックで何かを尋ねるのはこれが初めてで、運が悪くてもすでに多くの検索を行っています。

私は EF 4 を使用しており、最初にコードを使用して多対多の関係を作成したいと考えています。私が抱えている問題は、アプリケーションがローカライズされており、現在 2 つの言語 (スペイン語と英語) があることです。そのため、開業医と専門分野の 2 つのエンティティを作成しました。

[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; }
}

私は開業医に多くの専門分野を持たせ、ID ではなくコードによって「マッピング」を行うことを望んでいます。たとえば、同じコードを持つ 2 つの専門分野があるためです: 婦人科と婦人科" それらは同じ専門分野であり、ID が異なるコード 12 を持っています。

アイデアは、データベース内のデータが次のようになることです。

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

CodeFirst でこれを達成する方法はありますか?

4

1 に答える 1

0

グローバリゼーションがデータベース設計にこのような影響を与えるべきではありません。

専門分野ごとに 1 つの専門分野レコードを単純に作成し (したがって、関係は 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; }
}
于 2013-11-08T13:58:31.043 に答える