c# - 添加架构 EF Core 表属性

标签 c# entity-framework ef-code-first entity-framework-core

我在将架构添加到 EF Core 中的表属性时遇到了一些困难。运行 ado.net 时,以下工作正常:

private static void Reademps()
{
    string sql = "SELECT [Id],[empno] FROM [encrypt].[dbo].[emps]";

    var connection = new SqlConnection(connectionString);
    var command = new SqlCommand(sql, connection);

    connection.Open();

    using (SqlDataReader reader = command.ExecuteReader(System.Data.CommandBehavior.CloseConnection))
    {
        while (reader.Read())
        {
            Console.WriteLine($"id: {reader[0]} empno: {reader[1]}");
        }
    }
}

但是尝试转换为 EF Core:

private async Task ReadempsAsync()
{
    using (var context = new EmpsContext())
    {
        List<Emp> emps = await context.Emps.ToListAsync();

        foreach (var b in emps)
        {
            Console.WriteLine($"{b.Id} {b.Empno}");
        }
    }
}

internal class EmpsContext : DbContext
{
    private const string ConnectionString = @"server=localhost\SQLEXPRESS;Database=master;Integrated security=true;Database=master;Column Encryption Setting=enabled";

    public DbSet<Emp> Emps { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        base.OnConfiguring(optionsBuilder);
        optionsBuilder.UseSqlServer(ConnectionString);
    }
}

[Table("emps", Schema = "encrypt")]
public class Emp
{
    public int Id { get; set; }
    [Required]
    [StringLength(50)]
    public string Empno { get; set; }  
}

我一直收到错误:

System.Data.SqlClient.SqlException: 'Invalid object name 'encrypt.emps'.'

最佳答案

在您的 SQL 中 - [encrypt] 似乎是 database 名称 - 而不是 schema 名称(那将是 dbo 在中间)。

SELECT [Id],[empno] FROM [encrypt].[dbo].[emps]
                         ********* ***** ******
                         *         *     * Table Name
                         *         * Schema name 
                         * Database name

因此您的 EF Core 表声明错误,因为它将架构定义为encrypt - 但事实并非如此。

所以这样:

[Table("emps", Schema = "encrypt")]
public class Emp

应该是:

[Table("emps", Schema = "dbo")]
               **************
public class Emp

关于c# - 添加架构 EF Core 表属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54976010/

相关文章:

c# - 在不同的程序集上从上下文启用迁移

entity-framework-4 - Entity Framework Power Tools CTP1 可以为存储过程生成类吗?

c# - 我如何更新 EF CF 中的实体对象(分离)?

c# - 更改 DropDownListFor 样式

c# - 从 C# 调用 Python 应用程序/脚本

c# - Entity Framework 是否有某种上下文缓存?

ef-code-first - EF Code First 使用非主键创建一对多关系

c# - 从 Programm 类开始打开一个窗口?

c# - 如何绘制 Y 轴上的多个列? (MS 图表控件)

c# - 存储更新、插入或删除语句影响了意外数量的行