Iva*_*ono 3 c# entity-framework
我有以下连接字符串:
<?xml version="1.0" encoding="utf-8"?>
<connectionStrings>
<add name="MyContext" connectionString="metadata=res://*;provider=System.Data.SqlClient;provider connection string='data source=SQLSERVERDB;initial catalog=TestDB_CodeFirst;user id=***;password=***;MultipleActiveResultSets=True;App=EntityFramework'" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
当我尝试启用迁移时,我首先收到警告:
无法确定有效的启动项目。改用项目“MyApp.Model”。
您的配置文件和工作目录可能未按预期设置。
使用 -StartUpProjectName 参数明确设置一个。
然后我得到这个异常:
参数“xmlReader”无效。必须至少提供一个 .ssdl 工件。
连接字符串是否错误?如果我使用 Code First,为什么还需要 ssdl?
笔记
MyApp.Model在我的Migrations文件夹应该位于的项目中。MyApp.Model它指向我的开发数据库。另外,我的第二个问题是:
如果我使用 CF 迁移,每次用户第一次选择不同的数据库时,是否会迁移所有数据库?
编辑
我更改了如下所述的连接,但出现以下异常:
元数据集合中已存在标识为“table1”的项目。参数名称:项目
必须指出的是,我对现有数据库进行了逆向工程。所以我不知道可能出了什么问题!
我还删除了 Migrations 文件夹并检查了数据库,但没有创建 migration_history 表。
您正在尝试使用旨在与数据库优先/模型优先一起使用的 connectionString。您可以判断,因为您的 providerName 是 System.Data.EntityClient 而不是 System.Data.SqlClient。
您的连接字符串应如下所示:
<connectionStrings>
<add name="MyContext"
connectionString="Data Source=SQLSERVERDB; Initial Catalog=TestDB_CodeFirst;user id=***;password=***;"
providerName="System.Data.SqlClient" />
</connectionStrings
Run Code Online (Sandbox Code Playgroud)
虽然我建议使用集成安全而不是用户/密码。不过只是个人喜好。
| 归档时间: |
|
| 查看次数: |
3164 次 |
| 最近记录: |