标签: sql-server-ce-4

与ID上的.SingleOrDefault相比,DbSet.Find方法非常慢

我有以下代码(数据库是SQL Server Compact 4.0):

Dim competitor=context.Competitors.Find(id)
Run Code Online (Sandbox Code Playgroud)

当我对此进行分析时,Find方法需要300 + ms才能从仅有60条记录的表中检索竞争对手.

当我将代码更改为:

Dim competitor=context.Competitors.SingleOrDefault(function(c) c.ID=id)
Run Code Online (Sandbox Code Playgroud)

然后在3毫秒内找到竞争对手.

竞争者类:

Public Class Competitor
    Implements IEquatable(Of Competitor)

    Public Sub New()
        CompetitionSubscriptions = New List(Of CompetitionSubscription)
        OpponentMeetings = New List(Of Meeting)
        GUID = GUID.NewGuid
    End Sub

    Public Sub New(name As String)
        Me.New()
        Me.Name = name
    End Sub

    'ID'
    Public Property ID As Long
    Public Property GUID As Guid

    'NATIVE PROPERTIES'
    Public Property Name As String

    'NAVIGATION PROPERTIES'
    Public Overridable Property CompetitionSubscriptions As ICollection(Of CompetitionSubscription)
    Public Overridable Property …
Run Code Online (Sandbox Code Playgroud)

entity-framework ef-code-first sql-server-ce-4 dbcontext dbset

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

在具有MVC 3的远程主机上使用SQL Server CE 4

我刚刚将我的主机升级到MVC 3,但我正在尝试使用SQLCE 4.0做一个"hello world",但我得到了:

很抱歉,在执行您的要求时发生了一个错误.

我看到我的布局和一切,但我看到的不是数据.

在localhost上按预期工作

我有:

<add name="PruebaContext" connectionString="Data Source=|DataDirectory|db.sdf" providerName="System.Data.SqlServerCE.4.0"/>
Run Code Online (Sandbox Code Playgroud)

作为connectionString.

我把sdf作为项目的一部分,我将System.Data.SqlServerCE.dll添加到项目中,并将本地副本设置为true.

我没有更多的想法.connString,dll在/ bin中,在localhost中工作.

有任何想法吗?

谢谢.

编辑

我现在有一些日志:

没有/ bin上的"System.Data.SqlServerCE.dll":

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

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

很好.他们没有SqlServerCE4.

使用本地副本上的Dll,AKA/bin:

无法加载与版本8482的ADO.NET提供程序对应的SQL Server Compact的本机组件.安装正确版本的SQL Server Compact.有关更多详细信息,请参阅知识库文章974247.

异常详细信息:System.Data.SqlServerCe.SqlCeException:无法加载与版本8482的ADO.NET提供程序对应的SQL Server Compact的本机组件.安装正确版本的SQL Server Compact.有关更多详细信息,请参阅知识库文章974247.

KB说我需要x86和amd64的dll.我在某处读到了如果我将两个目录复制到/ bin,例如:/ bin/x86和/ bin/amd64.我从SqlServerCE 4安装文件夹的私人文件夹中复制了这些文件夹.现在我得到了:

在ADO.NET提供程序和SQL Server Compact的本机二进制文件之间检测到可能的文件版本不匹配,这可能导致功能不正确.这可能是由于存在多个不同版本的SQL Server Compact实例,或者是由于与SQL Server Compact二进制文件具有相同名称的错误二进制文件.请安装匹配版本的SQL Server Compact二进制文件.

好.在SQLServerCE4的根文件夹上我也有一些dll,所以我删除了这两个文件夹并将该dll复制到/ bin:

无法加载文件或程序集'file:/// C:\ HostingSpaces\jesusrod\foxandxss.net\wwwroot\mvc3\bin\sqlceca40.dll'或其依赖项之一.该模块应该包含一个程序集清单.

我想我尝试过所有的事情.Scottgu说SqlServerCE 4应该可以在没有安装的任何服务器上运行.

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

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

代码优先迁移和初始化错误

我不确定如何使用代码首次迁移功能.根据我的理解,它应该创建我的数据库(如果它已经不存在),并根据迁移文件将其更新为最新的模式.但我正在努力解决它,因为我总是会遇到很多错误,而且我不确定如何正确使用它.

internal class Program
{
    private static void Main()
    {
        EntityFrameworkProfiler.Initialize();

        Database.DefaultConnectionFactory = new SqlCeConnectionFactory("System.Data.SqlServerCe.4.0");
        Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration>());

        using (var context = new MyContext())
        {
            var exists = context.Database.Exists();
            if (!exists)
            {
                context.Database.Create();
            }

            var element = context.Dummies.FirstOrDefault();
        }
    }
}

public class MyContext : DbContext
{
    public MyContext()
        : base(string.Format(@"DataSource=""{0}""", @"C:\Users\user\Desktop\MyContext.sdf"))
    {
    }

    public DbSet<Dummy> Dummies { get; set; }
}

internal sealed class Configuration : DbMigrationsConfiguration<MyContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
    }

    protected override void Seed(CodeFirstTest.MyContext …
Run Code Online (Sandbox Code Playgroud)

c# ef-code-first sql-server-ce-4 ef-migrations

25
推荐指数
3
解决办法
1万
查看次数

如何将我的Sql Server CE 3.5 sdf数据库升级到Sql Server CE 4.0?

我需要将我的SqlCE3.5数据库更新为4.0.

当我尝试使用新的CE4.0连接提供访问我的3.5 sdf /数据库时,我收到以下错误消息: -

System.Data.EntityException:基础提供程序在Open上失败.---> System.Data.SqlServerCe.SqlCeInvalidDatabaseFormatException:数据库文件已由早期版本的SQL Server Compact创建.请使用SqlCeEngine.Upgrade()方法升级.

谁知道我怎么做到这一点?显然我需要以编程方式进行,但我不确定我应该做什么/我需要添加什么参考,等等.

干杯!

visual-studio-2010 sql-server-ce entity-framework-4 sql-server-ce-4

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

如何打开SQL CE4 .sdf数据库文件?

我安装了Microsoft WebMatrix,我认为它与SQL Server CE4一起提供.我尝试在SQL Management Studio中打开SDF文件(SQL 2008),但是我收到以下错误消息:

-------- Microsoft SQL Server Management Studio:没有可用于'C:\ efTest\App_Data\SchoolRepository.sdf'的编辑器.

确保已安装文件类型(.sdf)的应用程序.

如何查看/修改.sdf数据库?

我看到在StackOverflow上有一个类似的问题(http://stackoverflow.com/questions/4070860/sql-compact-4-0-cant-open-read-sdf-file)但我真的想使用Management Studio我可以,而不是另一个第三方工具.

sql-server-ce-4

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

无法加载SQL Server Compact的本机组件

我在Win7 x64上安装了SQL Server Compact Edition 4.0,它同时为Asp.Net和桌面应用程序运行.此PC还安装了Visual Studio 2010 SP1.但是我的Server 2008 R2会为Asp.Net应用程序产生以下错误,尽管它可以运行桌面应用程序:

Unable to load the native components of SQL Server Compact corresponding to the
ADO.NET provider of version 8482. Install the correct version of SQL Server
Compact. Refer to KB article 974247 for more details.
Run Code Online (Sandbox Code Playgroud)

我已经尝试过使用SqlDataSource和SqlCeConnection.同样的错误.我的web.config如下所示:

<?xml version="1.0"?>
<configuration>
    <connectionStrings>
       <add name="SQLCE" connectionString="Data Source=|DataDirectory|\a.sdf"
        providerName="System.Data.SqlServerCe.4.0" />
    </connectionStrings>
    <system.web>
        <compilation debug="true" targetFramework="4.0">
            <assemblies>
                <add assembly="System.Data.SqlServerCe, Version=4.0.0.0,
                Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
            </assemblies>
        </compilation>
    </system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)

还试图将dll复制到这里虽然没有效果但是没有效果.

asp.net sql-server-ce sql-server-ce-4

14
推荐指数
1
解决办法
3万
查看次数

实体框架6更新图表

保存不知道状态的对象图的正确方法是什么?按状态我的意思是它们是新的还是现有的数据库条目正在更新.

例如,如果我有:

public class Person
{
     public int Id { get; set; }
     public int Name { get; set; }
     public virtual ICollection<Automobile> Automobiles { get; set; }

}

public class Automobile
{
     public int Id { get; set; }
     public int Name { get; set; }
     public short Seats { get; set; }
     public virtual ICollection<MaintenanceRecord> MaintenanceRecords { get; set ;}
     public virtual Person Person { get; set; }
}

public class MaintenanceRecord
{
     public int Id { get; …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework sql-server-ce-4 entity-framework-6

12
推荐指数
1
解决办法
9775
查看次数

为什么EF4尝试重新创建我的数据库,即使模型没有改变?

我有一个使用SQL Server CE 4.0的ASP.NET MVC 3 Beta网站.使用ScottGu的NerdDinner示例和我自己的代码,我有时会在尝试访问数据库时遇到以下异常:

File already exists. Try using a different database name. 
[ File name = D:\Sourcecode\NerdDinner\NerdDinner\App_Data\NerdDinners.sdf ]

Line 17:         public ActionResult Index()
Line 18:         {
Line 19:             var dinners = from d in nerdDinners.Dinners
Line 20:                           where d.EventDate > DateTime.Now
Line 21:                           select d;

[SqlCeException (0x80004005): File already exists. Try using a different database name. [ File name = D:\Sourcecode\NerdDinner\NerdDinner\App_Data\NerdDinners.sdf ]]
   System.Data.SqlServerCe.SqlCeEngine.ProcessResults(IntPtr pError, Int32 hr) +92
   System.Data.SqlServerCe.SqlCeEngine.CreateDatabase() +1584
   System.Data.SqlServerCe.SqlCeProviderServices.DbCreateDatabase(DbConnection connection, Nullable`1 timeOut, StoreItemCollection storeItemCollection) …

asp.net-mvc entity-framework-4 sql-server-ce-4 asp.net-mvc-3

11
推荐指数
2
解决办法
1723
查看次数

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

自答问题以备将来参考:

如果您有一个删除并重新添加内容的表,则在插入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
查看次数

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
查看次数