我在以下场景中遇到了db生成问题:
1.cs First.Entities命名空间中的项目实体maped到First_Project表。
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命名空间中的项目实体maped到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; }
}
}
请帮忙。
答案 0 :(得分:11)
这是不可能的。单个上下文类型中每个映射实体的类名(无命名空间)必须是唯一的。原因在this answer中列出。
您必须使用不同的类名。顺便说一句。使用不同的(更具体的)类名也可以使您的代码更易读,并且您的类型可以更好地使用。
答案 1 :(得分:0)
我认为,当您为两个实体使用不同的数据库架构时,这是可能的。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<First.Entities.Project>().ToTable("Project", "First");
modelBuilder.Entity<Second.Entities.Project>().ToTable("Project", "Second");
}