我对代码优先方法有些陌生,但是在使用实体框架之前我先使用数据库优先方法,现在我想先使用代码,这是一种习惯。
我开始创建模型,并且一切都很好,然后也启用了迁移和添加迁移,并且都运行良好,但是当我运行Update-Database命令时出现错误。
因此,我想先使用凭据创建代码优先的数据库,经过大量研究后,我没有找到解决方案,并且大多数教程使用“受信任的连接”。
我用什么
App.Config
<connectionStrings>
<add name="CodeFirst" connectionString="Server=.\SQLEXPRESS;Database=CodeFirst;User ID=anyuser;Password=anypassword;"
providerName="System.Data.SqlClient" />
</connectionStrings>
DbContext类
public class CodeFirstContext : DbContext
{
public CodeFirstContext() : base("name=CodeFirst")
{
}
public DbSet<Product> Products { get; set; }
public DbSet<Category> Categories { get; set; }
}
我得到的错误
Login failed for user 'anyuser'.
问题是我做错了什么?或使用代码优先方法无法使用凭据?
提前感谢
OP:
我想使用凭据和<>使用代码优先与[[创建数据库
...和:
经过大量研究,我没有找到解决方案,并且大多数教程使用“受信任的连接”。-这是鸡肉和鸡蛋,因为:[使用特定登录名部署到新数据库时,
代码优先方法存在问题
<connectionStrings>
<add name="CodeFirst"
connectionString="Server=.\SQLEXPRESS;Database=CodeFirst;User ID=anyuser;Password=anypassword;"
... />
</connectionStrings>
那是什么解决方案?
使用集成安全性:
这使您可以从代码从头开始创建数据库。但是,您以后可能需要创建任何其他登录信息。但是,这是一个不好的做法,因为您应该习惯于拥有一个用于部署的帐户和另一个用于常规应用访问的帐户]首先创建登录名:
为什么采用数据库优先方法会更好?
同时,通过从数据库侧部署DACPAC来进行数据库优先模式更改。身份验证首先是通过用于登录SSMS的登录名进行的。 DACPAC部署不需要.NET或其他代码。
DACPAC可以创建和/或修改数据库安全性,包括登录名,但通常对此并不满意。
[更多的考虑因素,代码优先和EF迁移在现实环境中失败了,因为Visual Studio(创建迁移的事物)仅了解直接目标数据库架构(无论开发人员使用的是什么),并且不是: