2012-01-19 70 views
8

我在以下情况下使用DB生成一个问题:在马培德到First_Project表First.Entities命名空间实体框架代码优先 - 两个实体具有相同的名称,但在不同的命名空间

1.cs项目实体。

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.Entities命名空间中的项目实体配对到Second_Project表中。

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的DbContext文件

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

请帮助。

+5

你会得到什么错误?你有什么需要帮助的? –

+0

在这种情况下无法创建数据库。错误是: – mehanik

+0

'Second.Entities.Project'类型未映射。使用Ignore方法或NotMappedAttribute数据注释检查类型是否未被明确排除。验证类型是否定义为一个类,不是原始的,嵌套的或通用的,并且不从EntityObject继承。 – mehanik

回答

10

这是不可能的。单个上下文类型中每个映射实体的类名称(无名称空间)必须是唯一的。原因概述于this answer

您必须使用不同的类名称。顺便说一句。使用不同的(更具体的)类名也会使您的代码更易读,并且您的类型可以更好地使用。

相关问题