2012-01-19 21 views
8

私は次のシナリオでデシベル世代に問題があります。Entity Frameworkのコードファーストと同じ名前を持つが、異なる名前空間内の2つのエンティティは

namespace First.Entities 
{ 
    #region using section 

    using System.Collections.Generic; 
    using System.ComponentModel.DataAnnotations; 
    using System.Data.Entity.ModelConfiguration; 
    using System.Diagnostics.CodeAnalysis; 

    #endregion 

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

     [Required] 
     [MaxLength(1000)] 
     public string Name 
     { 
      get; 
      set; 
     } 
    } 
} 

2.cs Second.PropertiesテーブルにマップされたSecond.Entities名前空間のプロジェクトエンティティ。

namespace Second.Entities 
{ 
    #region using section 

    using System.Collections.Generic; 
    using System.ComponentModel.DataAnnotations; 
    using System.Data.Entity.ModelConfiguration; 
    using System.Diagnostics.CodeAnalysis; 

    #endregion 

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

     [Required] 
     [MaxLength(1000)] 
     public string Name 
     { 
      get; 
      set; 
     } 
    } 
} 

3.csは助けてください

namespace DataContext 
{ 
    #region using section 

    using System.Collections.Generic; 
    using System.Data.Common; 
    using System.Data.Entity; 
    using System.Data.Entity.Infrastructure; 
    using System.Data.Entity.ModelConfiguration.Conventions; 
    using System.Diagnostics.CodeAnalysis; 
    using First.Entities; 
    using Second.Entities; 

    #endregion 

    public class MyEntities : DbContext 
    { 
     public DbSet<First.Entities.Project> FirstProjects { get; set; } 

     public DbSet<Second.Entities.Project> SecondProjects { get; set; } 
    } 
} 

ファイルDbContext。

+5

どのようなエラーが発生しますか?何が助けを必要としますか? –

+0

このようなシナリオでは、データベースを作成することはできません。エラー: – mehanik

+0

タイプ 'Second.Entities.Project'がマップされませんでした。 IgnoreメソッドまたはNotMappedAttributeデータ注釈を使用して、型が明示的に除外されていないことを確認します。型がクラスとして定義されていて、プリミティブ、ネストまたはジェネリックではなく、EntityObjectから継承していないことを確認してください。 – mehanik

答えて

10

これはできません。単一コンテキストタイプのマッピングされたすべてのエンティティのクラス名(名前空間なし)は一意でなければなりません。その理由はthis answerに概説されています。

異なるクラス名を使用する必要があります。 Btw。異なる(より具体的な)クラス名を使用すると、コードをより読みやすくし、型をより使いやすくすることができます。