【发布时间】:2014-11-04 21:17:15
【问题描述】:
我尝试创建一个Equation 实体并将其添加到 SQL Server db,我的代码中没有任何错误,但我没有看到 db 中的任何更改。
我在 Visual Studio 的服务器资源管理器中检查了 db,没有添加值。当我在我的项目中为其创建 ef 数据模型时,数据库被添加到项目中,因此 Visual Studio 在我的项目中制作了数据库的副本。但是我不知道为什么它在项目目录和/bind/Debug目录中创建了两个副本。
实体类:
public partial class Equation
{
public Equation()
{
this.Results = new HashSet<Result>();
}
public int id { get; set; }
public double a { get; set; }
public double b { get; set; }
public double c { get; set; }
public virtual ICollection<Result> Results { get; set; }
}
id 是主键,具有标识(1,1)
我的代码:
private EquationDBEntities dbcontext = new EquationDBEntities();
Equation eq = new Equation()
{
a = 1, b = 2, c = 3
};
dbcontext.Equations.Add(eq);
dbcontext.SaveChanges();
数据库上下文:
public partial class EquationDBEntities : DbContext
{
public EquationDBEntities()
: base("name=EquationDBEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<Equation> Equations { get; set; }
public virtual DbSet<Result> Results { get; set; }
连接字符串:
<connectionStrings>
<add name="EquationDBEntities" connectionString="metadata=res://*/EquationDBModel.csdl|res://*/EquationDBModel.ssdl|res://*/EquationDBModel.msl;
provider=System.Data.SqlClient;
provider connection string="
data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\EquationDB.mdf;
integrated security=True;connect timeout=30;
MultipleActiveResultSets=True;App=EntityFramework"
" providerName="System.Data.EntityClient" />
</connectionStrings>
带有ef模型的项目的App.Config(我从我当前的项目中引用它)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="EquationDBEntities" connectionString="metadata=res://*/EquationDBModel.csdl|res://*/EquationDBModel.ssdl|res://*/EquationDBModel.msl;provider=System.Data.SqlClient;provider connection string="data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\EquationDB.mdf;integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
有什么想法吗?
【问题讨论】:
-
你能发布你的 DbContext 代码吗?
-
您能告诉我们您的连接字符串吗?
-
这些属性是您自己创建的,还是使用 .EMDX 模型从数据库中生成的?
-
好的,现在我们到了某个地方。您能否发布一些您的 CONFIG 文件?
-
如果你的问题是我认为的,这篇文章对问题(和修复)有很好的解释:visualstudiomagazine.com/blogs/tool-tracker/2012/05/…
标签: c# sql-server database entity-framework