如何解决Entity Framework 6 和 SQL Server CE,代码优先
我正在使用实体框架(代码优先方法)和 sql Server CE 数据库。
我遇到的问题是未创建 sql Server CE 数据库,并且似乎未使用 app.config
文件,因为连接 (sqllocaldb) 中存在错误的连接字符串。
项目:
-
SaltMgr
(调用SaltMgr.Data
的 WPF 应用)
var rep = new WiegedatenRepository();
var xx = rep.List();
SaltMgr.Data
- DbContext
:
using SaltMgr.Data.Model;
using System;
using System.Configuration;
using System.Data.Common;
using System.Data.Entity;
using System.Data.sqlServerCe;
namespace SaltMgr.Data.DAL
{
public class RepositoryContext : DbContext
{
static RepositoryContext()
{
try
{
// Database initialize
Database.Setinitializer<RepositoryContext>(new DbInitializer());
using (var db = new RepositoryContext())
{
db.Database.Initialize(false);
db.Database.CreateIfNotExists();
}
}
catch(Exception)
{
throw;
}
}
public DbSet<Wiegedaten> Wiegedaten { get; set; }
}
class DbInitializer : CreateDatabaseIfNotExists<RepositoryContext>
{
}
}
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection,EntityFramework,Version=6.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
</configSections>
<entityFramework>
<providers>
<provider invariantName="System.Data.sqlServerCe.4.0" type="System.Data.Entity.sqlServerCompact.sqlCeProviderServices,EntityFramework.sqlServerCompact" />
</providers>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.sqlCeConnectionFactory,EntityFramework">
<parameters>
<parameter value="System.Data.sqlServerCe.4.0"/>
</parameters>
</defaultConnectionFactory>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.sqlServerCe.4.0"/>
<add name="Microsoft sql Server Compact Data Provider 4.0" invariant="System.Data.sqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft sql Server Compact" type="System.Data.sqlServerCe.sqlCeProviderFactory,System.Data.sqlServerCe,Version=4.0.0.0,PublicKeyToken=89845dcd8080cc91"/>
</DbProviderFactories>
</system.data>
<connectionStrings>
<add name="SaltMgr.Data.DAL.RepositoryContext" providerName="System.Data.sqlServerCe.4.0" connectionString="Data Source=C:\Sourcecode\SaltMgr\Database\SaltMGrdatabase.sdf"/>
</connectionStrings>
</configuration>
还有 Wiegedaten
模型类:
using System;
using System.ComponentModel.DataAnnotations;
namespace SaltMgr.Data.Model
{
public class Wiegedaten
{
[Key]
public int Id { get; set; }
[required]
public int LaufendeNummer { get; set; }
[required]
public DateTime Datum { get; set; }
[required]
[StringLength(100)]
public string Kundenname { get; set; }
[required]
[StringLength(100)]
public string Entnehmername { get; set; }
[required]
public int Tara { get; set; }
[required]
public int Brutto { get; set; }
[required]
public int Netto { get; set; }
[required]
public int AlibiNummer { get; set; }
}
}
有人有解决方案吗?为什么这不起作用?
解决方法
您必须将配置(app config)内容移动到您的可执行项目中,它对其他项目没有影响。 因此,您的数据库已在 LocalDB 实例中正确创建! 执行此操作后,SQL 提供程序会按预期启动。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。