标签: sql-server-ce

使用Effort和SQL CE并行进行单元测试失败

我正在评估使用EF6结合的单元测试

http://www.codeproject.com/Articles/460175/Two-strategies-for-testing-Entity-Framework-Effort是一个非常好的参考,但现在我卡住了.

我有2个测试项目(一个用于Effort,另一个用于SQL CE).如果我单独运行两个都很好.使用ReSharper测试运行器连续运行最后一个测试项目总是失败.或

System.InvalidOperationException:在尝试添加"已加载"事件处理程序之前,实体框架已在使用DbConfiguration实例."加载"事件处理程序只能在使用实体框架之前作为应用程序启动的一部分添加.

要么

System.InvalidOperationException:在尝试设置"SqlCeConfiguration"实例之前,实体框架使用了默认的DbConfiguration实例.在使用任何Entity Framework功能之前,必须在应用程序启动时设置"SqlCeConfiguration"实例,或者必须在应用程序的配置文件.

它总是一样的.后继继承了前一个DbConfiguration实例.如何在没有副作用的情况下运行两个测试项目/配置?

这是我的DbContext类:

public class DataContext : DbContext
{
    public DataContext(string connectionString) : base(connectionString)
    { Configuration.LazyLoadingEnabled = false; }

    public DataContext(DbConnection connection) : base(connection, true)
    { Configuration.LazyLoadingEnabled = false; }
}
Run Code Online (Sandbox Code Playgroud)

那是Effort的测试夹具:

[TestFixtureSetUp]
public void TestFixtureSetup()
{
    EffortProviderConfiguration.RegisterProvider();
    var connection = DbConnectionFactory.CreateTransient();
    var dbContext = new DataContext(connection);
    ...
}
Run Code Online (Sandbox Code Playgroud)

这是SQL CE的测试夹具:

[TestFixtureSetUp]
public void TestFixtureSetup()
{
    const string filePath = @"LocalDb.sdf"; …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing entity-framework sql-server-ce

10
推荐指数
1
解决办法
2624
查看次数

SQL Server CE中Shrink和Compact有什么区别?

我有一个定期运行的方法来优化我的应用程序的SQL Server Compact Edition(3.5)数据库.现有代码使用Shrink()方法:

        SqlCeEngine engine = new SqlCeEngine(dbConnectionString);
        engine.Shrink();
Run Code Online (Sandbox Code Playgroud)

今天我注意到还有一个Compact()方法.哪个更适合定期维护?

sql-server sql-server-ce

9
推荐指数
1
解决办法
5206
查看次数

关闭或不关闭数据库中的连接

Windows-Mobile and Windows-CE使用SqlCE和我不知道做什么更好.

要在程序打开时打开连接,运行任何查询...更新...删除数据库并在程序关闭后关闭连接?

或者打开连接运行任何查询的..更新...删除数据库并立即关闭连接?

c# windows-mobile windows-ce sql-server-ce

9
推荐指数
1
解决办法
2718
查看次数

无法将重复值插入唯一索引

自答问题以备将来参考:

如果您有一个删除并重新添加内容的表,则在插入ID等于现有ID的新行时可能会出现此错误:

Server Error in '/' Application.

A duplicate value cannot be inserted into a unique index. [ Table name = Stories,Constraint name = PK__Stories__000000000000001C ]

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Data.SqlServerCe.SqlCeException: A duplicate value cannot be inserted into a unique index. [ Table name = Stories,Constraint name = PK__Stories__000000000000001C ]

Source …
Run Code Online (Sandbox Code Playgroud)

asp.net exception-handling sql-server-ce sql-server-ce-4 asp.net-mvc-3

9
推荐指数
0
解决办法
4188
查看次数

SQL Server CE数据库大小问题

我有一家公司申请破产.它似乎使用SQL Server CE数据库.我搜索了系统,找不到任何.sdf文件.看来数据库变得太大了.知道如何找到数据库并更改最大大小?

错误信息:

无法记录应用程序启动. - System.Data.EntityCommandExecutionException:从商店提供商的数据读取器读取时发生错误.有关详细信息,请参阅内部异常 --->

System.Data.SqlServerCe.SqlCeException:数据库文件大于配置的最大数据库大小.此设置仅对第一个并发数据库连接生效.[所需的最大数据库大小(以MB为单位;如果未知则为0)= 257]

.net sql-server-ce

9
推荐指数
1
解决办法
3055
查看次数

如何在EF中获得实体更改增量?

我只需要获取已更改字段的列表,数据存储区是ssce,因此没有可用的触发器

EF中是否有任何支持来获取列表或构建通用组件?

.net c# entity-framework sql-server-ce

9
推荐指数
1
解决办法
3457
查看次数

删除大量行时,DivideByZeroException与SQL Server CE 4

我有一个使用LINQ-to-SQL和SQL Server CE 4的应用程序.我知道这不是官方支持的,但我们已经使它工作,但有以下例外.有时,在尝试更新数据库时,我们会在数据库中出现一行错误.

我们使用a DataContext从数据库中选择一行,更新几列(一个布尔和一个字节列),然后我们调用SubmitChanges().当我们提交更改时,我们会收到包含以下堆栈跟踪的DivideByZeroException:

System.DivideByZeroException:尝试除以零.
在System.Data.SqlServerCe.NativeMethodsHelper.CompileQueryPlan(IntPtr的pQpCommand,字符串pwszCommandText,ResultSetOptions选项,IntPtr的[] pParamNames,IntPtr的prgBinding,的Int32 cDbBinding,IntPtr的&pQpPlan,IntPtr的PERROR)
在System.Data.SqlServerCe.NativeMethods.CompileQueryPlan(IntPtr的pQpCommand , System.Data.SqlServerCe.SqlCeCommand.ExecuteCommand(CommandBehavior behavior,
System.Data.SqlServerCe.SqlCeCommand.CompileQueryPlan())
中的字符串pwszCommandText,ResultSetOptions选项,IntPtr [] pParamNames,IntPtr prgBinding,Int32 cDbBinding,IntPtr&pQpPlan,IntPtr pError)串的方法,ResultSetOptions选项)
在System.Data.SqlServerCe.SqlCeCommand.ExecuteNonQuery()
在System.Data.Linq.SqlClient.SqlProvider.Execute(表达式查询,queryInfo queryInfo,IObjectReaderFactory工厂,对象[] parentArgs,对象[] userArgs, System.Data.Linq.SqlClient.SqlProvider.ExecuteAll中的ICompiledSubQuery [] subQueries,Object lastResult)
(表达式查询,QueryInfo [] queryInfos,IObjectReaderF actory工厂,对象[] userArguments,ICompiledSubQuery []子查询)
在System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(表达式查询)
在System.Data.Linq.ChangeDirector.StandardChangeDirector. DynamicUpdate(TrackedObject项目)
在System.Data.Linq.ChangeDirector.StandardChangeDirector.Update(TrackedObject项目)
在System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode)
在System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
在System.Data.Linq.DataContext.SubmitChanges()

编辑:

在分析时,问题似乎是在delete语句上生成的,类似于:

DELETE FROM [WorkItemUid] WHERE([OID] = 24151/*@ P0 /)和([WorkItemOid] = 745 / @ P1 /)和([SeriesInstanceUid] = '1.3.12.2.1107.5.1.4.54023.30000004101914490887500000063'/ @ P2 /)和([SopInstanceUid] = '1.3.12.2.1107.5.1.4.54023.30000004101913521221800001089'/ @ P3 /)和([完成] = 1)AND([FailureCount] = 0 / @ …

.net sql-server-ce linq-to-sql

9
推荐指数
1
解决办法
1163
查看次数

ntext,text和image的弃用是否会影响SQL Server Compact Edition?

根据这个MSDN页面:

将来的Microsoft SQL Server版本中将删除ntext,textimage数据类型.

避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序.请改用nvarchar(max),varchar(max)varbinary(max).

这对SQL Server Compact Edition有何影响?varbinary(max)SQL Server Compact Edition(CE)4.0目前不支持.

sql-server sql-server-ce sql-server-ce-4

9
推荐指数
1
解决办法
1107
查看次数

连接字符串中的%APPDATA%不替换实际文件夹?

当使用WPF和实体框架时,我有一个APP.CONFIG,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
     <add name="DatabaseEntities" connectionString="metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlServerCe.4.0;provider connection string=&quot;Data Source=%APPDATA%\Folder\Database.sdf&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

使用此代码时,它始终抛出以下错误:

System.Data.EntityException: The underlying provider failed on Open. ---> System.Data.SqlServerCe.SqlCeException: The path is not valid. Check the directory for the database. [ Path = %APPDATA%\Folder\Database.sdf ]
Run Code Online (Sandbox Code Playgroud)

当我从命令提示符运行路径"%APPDATA%\ Folder\Database.sdf"时它工作正常,如果我删除"%APPDATA%并硬编码路径它工作正常 - 所以它看起来像%APPDATA%是只是没有替换实际文件夹...

谢谢,

c# wpf entity-framework sql-server-ce

9
推荐指数
1
解决办法
9747
查看次数

实体Framewok代码首先使用本地SQL Server CE DLL"找不到ADO.NET提供程序"

我正在编写一个使用SQL Server CE 4.0文件的C#应用​​程序,这些文件可以通过代码优先通过Entity Framework 6.0访问.(应用程序需要能够使用本地dll进行SQL Server CE连接,即应用程序需要可以部署XCOPY).应用程序在我的开发机器上运行良好,但在其他机器上(例如只有Win7和.NET 4.0的VM),我得到一个ArgumentException:

具有不变名称"System.Data.SqlServerCe.4.0"的ADO.NET提供程序未在计算机或应用程序配置文件中注册,或者无法加载.有关详细信息,请参阅内部异常

内部异常消息说:

无法找到请求的.Net Framework数据提供程序.它可能没有安装.

我搜索过Google和SO,大多数评论表明确保App.config文件正确无误.我相信我的(默认连接工厂和提供商部分),但这里是内容:

<?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>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
  </startup>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="System.Data.SqlServerCe.4.0" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      <provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" />
    </providers>
  </entityFramework>
</configuration>
Run Code Online (Sandbox Code Playgroud)

build文件夹包含以下文件(当然还有特定于应用程序的文件):

  • EntityFramework.dll
  • EntityFramework.xml
  • EntityFramework.SqlServer.dll
  • EntityFramework.SqlServer.xml
  • EntityFramework.SqlServerCompact.dll
  • EntityFramework.SqlServerCompact.xml

在每个amd64和x86子文件夹中都有以下文件:

  • sqlceca40.dll
  • sqlcecompact40.dll
  • sqlceer40EN.dll
  • sqlceme40.dll
  • sqlceqp40.dll
  • sqlcese40.dll

我确定该程序在开发机器上运行,因为已经安装了SQL Server CE,但是如何在其他机器上使用本地SQL Server CE …

.net c# entity-framework sql-server-ce ef-code-first

9
推荐指数
2
解决办法
2万
查看次数