首先在不同模式下映射具有相同表的实体

本文关键字:实体 模式 映射 | 更新日期: 2023-09-27 18:19:25

如果有类似的问题,我很抱歉,但我找不到我想要的。

我使用实体框架6代码第一。我有不同方案的数据库。每个模式映射到不同的用户,表是相同的交叉模式。我创建了实体框架6代码第一和映射实体与表通过使用属性如下面的例子:

[Table("Log")]
public partial class Log
{
    /// <summary>
    /// Id
    /// </summary>
    public int Id { get; set; }
    /// <summary>
    /// Message
    /// </summary>
    [Required]
    public string Message { get; set; }
}

上面的例子不起作用,因为我没有使用默认模式,而且我有多个模式。如果我在属性中包含模式名,例如像这样

    [Table("SHEMA_NAME.Log")]

it will works.

我知道我可以在模型创建过程中通过编程提供模式名称来解决我的问题。

但是有没有办法使用一些通用的方式来映射实体与所有表从不同的方案,而不指定模式名称?

谢谢

首先在不同模式下映射具有相同表的实体

在你的上下文中你可以指定一个DefaultSchema:

public class YourContext: DbContext 
{
    public YourContext(): base() 
    {
    }
    public DbSet<Log> Logs { get; set; }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        //Configure default schema
        modelBuilder.HasDefaultSchema("SHEMA_NAME");
    }
}

看:http://www.entityframeworktutorial.net/code-first/configure-entity-mappings-using-fluent-api.aspx