我如何使用EF.Core数据库来搭建表格,首先包含特殊字符$

时间:2019-02-11 14:18:39

标签: c# .net entity-framework asp.net-core

我的SQL Server中有下表:

[prod].[dbo].[My Company$Customer]

我想用以下方法架起这张桌子:

Scaffold-DbContext "Server=SQLPROD;Database=prod;Trusted_Connection=True;integrated security=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -table "dbo.My Company$Customer"

但是它总是会给我以下错误:

Unable to find a table in the database matching the selected table

如果我省略了-table开关,那么一切都可以正常工作,但是我得到了ALL表,这些表是很多的,我不需要它们。那么如何正确使用-table开关? 我正在使用ef.core 2.2.1

2 个答案:

答案 0 :(得分:1)

使用EF Core 3.1,我必须转义$字符。

Scaffold-DbContext "Server=myServer;Database=myDB;User Id=sa;Password=xyz;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -table "[dbo].[My Company`$Product]"

答案 1 :(得分:0)

在SQL Server中,如果表名称中包含特殊字符(例如空格或任何非字母或数字的字符),则需要在对象名称前后加上方括号。因此您的命令行将变成这样:

Scaffold-DbContext "<connection-string>" 
    Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models 
    -table "[dbo].[My Company$Customer]"

您严格不需要模式(dbo)周围的方括号,但是在其中包含方括号也没有害处。