标签: sql-server-ce-4

在SQL Server CE中插入行并检索新行的标识

我正在尝试插入一行并使用以下内容返回新行的标识:

INSERT INTO blah....;
SELECT @@IDENTITY as NewID;
Run Code Online (Sandbox Code Playgroud)

我试图执行与在C#中的DbCommand对象的单个调用这两个语句......它似乎没有工作或我有什么不对.

我已经读过Compact Edition不支持批量执行多个语句......但我也发现了这个:

如果要同时运行多个查询,则必须为每个语句包含一个换行符,并在每个语句的末尾加一个分号.

来源:http://technet.microsoft.com/en-us/library/bb896140(SQL.110).aspx

它是否有效......如果是这样,我错过了什么?

(我意识到我可以执行两个命令并且工作正常,但我想知道我是否遗漏了某些东西).

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

8
推荐指数
1
解决办法
5365
查看次数

SQL:仅返回第一次出现

我很少使用SQL,我在档案中找不到任何类似的东西,所以我问这个简单的查询问题:我需要一个查询,其中一个返回personID,只有第一个看到的时间

记录:

seenID | personID | seenTime
   108      3         13:34
   109      2         13:56
   110      3         14:22
   111      3         14:31
   112      4         15:04
   113      2         15:52
Run Code Online (Sandbox Code Playgroud)

通缉结果:

personID | seenTime
   3         13:34
   2         13:56
   4         15:04
Run Code Online (Sandbox Code Playgroud)

这就是我所做的和失败的:

SELECT t.attendanceID, t.seenPersonID, t.seenTime
(SELECT ROW_NUMBER() OVER (PARTITION BY seenID ORDER BY seenID) AS RowNo,
seenID,
seenPersonID,
seenTime
FROM personAttendances) t
WHERE t.RowNo=1
Run Code Online (Sandbox Code Playgroud)

PS:注意SQL CE 4

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

8
推荐指数
3
解决办法
7万
查看次数

使用SQL Server CE 4.0和Entity Framework 4.2的批量插入的性能非常差

我使用Entity Framework 4.2(代码优先)将大量数据插入到SQL Server CE 4.0中,与直接SQL插入相比,性能极差.

该模型非常简单:

public class DocMember
{
    public DocMember() { this.Items = new List<DocItem>(); }

    public int Id { get; set; }

    public string Name { get; set; }
    public string MemberType { get; set; }
    public string AssemblyName { get; set; }

    public virtual IList<DocItem> Items { get; set; }
}

public class DocItem
{
    public int Id { get; set; }
    public DocMember Member { get; set; }
    public string PartType { get; set; …
Run Code Online (Sandbox Code Playgroud)

.net performance entity-framework sql-server-ce-4

8
推荐指数
1
解决办法
2044
查看次数

为什么我的DataContext不会使用SQL Server Compact Edition 4,而不是尝试使用3.5?

我正在使用SQL Server Compact Edition 4 CTP1,因为我想将它用作低流量Web应用程序的数据存储.当我尝试创建一个DataContext连接字符串指定System.Data.SqlServerCe.4.0(为了使用LINQ To SQL)时,我收到以下错误消息:

Cannot open '|DataDirectory|\data.sdf'. Provider 'System.Data.SqlServerCe.3.5' not installed.
Run Code Online (Sandbox Code Playgroud)

那么为什么我的代码不使用SQL CE的第4版?

背景故事:我正在使用Visual Web Developer Express 2010进行开发,但我下载了WebMatrix测试版并使用其设计器创建了.sdf包含一些测试数据的SQL CE 4 文件.

使用这些SqlCeConnection/SqlCeCommand/SqlCeDataReader类,我成功创建了一个基本的MVC应用程序,它可以检索测试数据并显示它.SQL CE 4二进制文件将复制到应用程序的bin文件夹中.在我的控制器中:

var connectionString = ConfigurationManager.ConnectionStrings["Main"].ConnectionString;
var tmp = new Dictionary<string, string>();

using(var conn = new SqlCeConnection(connectionString))
{
    conn.Open();

    using (SqlCeDataReader r = new SqlCeCommand("select * from ttest", conn).ExecuteReader())
    {
        while (r.Read())
        {
            tmp.Add(r["id"].ToString(), r["name"].ToString());
        }
    }
}

return View(new TestViewModel { …
Run Code Online (Sandbox Code Playgroud)

sql-server-ce linq-to-sql sql-server-ce-4 asp.net-mvc-2

7
推荐指数
1
解决办法
4769
查看次数

如何为ROW_NUMBER()获取替代值?

我有一个表格,其中包含以下值:

Name    Order    Innings
Suresh    1         1
Ramesh    2         1
Sekar     3         1
Raju      1         2
Vinoth    2         2
Ramu      3         2
Run Code Online (Sandbox Code Playgroud)

我希望结果如下:

1stInn  2ndInn  Order
Suresh  Raju      1
Ramesh  Vinoth    2
Sekar   Ramu      3
Run Code Online (Sandbox Code Playgroud)

ROW_NUMBER()在SQL Server中使用了结果.

我想在SQL Compact中获得相同的结果,但我无法ROW_NUMBER()在SQL Compact中使用.

我正在使用SQL Compact版本 - 4.0.8482.1

我怎样才能得到结果?

sql sql-server row-number sql-server-ce sql-server-ce-4

7
推荐指数
1
解决办法
203
查看次数

使用WebMatrix和Razor保存DateTime

我正在开发一个具有DateTime字段的项目.

在其中我使用jQuery为用户选择日期格式'dd/MM/yyyy'考虑到日期不是必填字段.

如何保存WebMatrix和Razor中不需要的DateTime字段?

我试图做这样的事情:

我只在这里找到我认为重要的代码来完成代码

@{
//Get data
string TaskForecastCompletion= Request["txtForecastCompletion"];
string TaskCompletedIn= Request["txtCompletedIn"];

                    DateTime dtForecastCompletion = default(DateTime);
                    if (!Request["txtForecastCompletion"].IsEmpty() && !DateTime.TryParse(Request["txtForecastCompletion"], out dtForecastCompletion))
                    {
                            ModelState.AddError("PrevisaoFinalizacao", "Data de previsão de finalização é inválida. Formato: dd/mm/aaaa");
                    }


                                    sql = @"update Tasks set Title = @0 ,Description = @1 ,ProjectID = @2 ,ForecastCompletion = @3 ,RequestBy = @4 ,CompletedIn = @5 ,Modified = getdate() ,Priority = @6 where ID = @7";
                                    db.Execute(sql, TaskTitle,TaskDescription, ProjectID, dtForecastCompletion, TaskRequestBy, dtTaskCompletedIn, TaskPriority, …
Run Code Online (Sandbox Code Playgroud)

c# asp.net webmatrix razor sql-server-ce-4

6
推荐指数
1
解决办法
2906
查看次数

Entity Framework 4.1和SQL Compact需要什么程序集?

以前我在我的项目中使用了Entity Framework 4.0 CTP5(代码优先)和SQL Compact.我使用NuGet安装了以下软件包:

  1. SQLCE.4.0.8435.1(版本4.0.8435.1)
  2. EFCodeFirst 0.8(版本4.0.30319.0)
  3. EFCodeFirst.SqlServerCompact.0.8(版本4.0.8435.1)

现在发布EF 4.1 RC时,我想将所有库更新到最新版本.NuGet feed不再包含SQLCE.4.0.8435.1的任何更新,但它有一个新包' SqlServerCompact - 4.0.8482.1 '(新包,而不是现有包的新版本).假设它刚刚重命名,我应该安装它.这样对吗?假设,是的.

NuGet也不包含"EFCodeFirst"和"EFCodeFirst.SqlServerCompact"包的任何更新.但它有一个新的' EntityFramework 4.1.10311.0 '包.

那么我应该安装什么?" EntityFramework 4.1.10311.0 "和" SqlServerCompact - 4.0.8482.1 "是否足以首先在SQL Compact中使用EF代码?

sql-server-ce entity-framework-4 nuget sql-server-ce-4 entity-framework-4.1

6
推荐指数
1
解决办法
1344
查看次数

实体框架4.1"代码优先"在Database.Delete之后不再调用SetInitializer

尝试首先使用EF 4.1代码进行一些单元测试.我有我的实时数据库(SQL Server)和我的单元测试数据库(Sql CE).在使用EF,Sql CE 4.0和事务支持进行战斗(并且失败)后,我决定运行我的测试的最简单方法是:

  1. 创建Db
  2. 运行测试
  3. 删除Db
  4. 冲洗并重复

我有[Setup]和[TearDown]功能:

[SetUp]
public void Init()
{
    System.Data.Entity.Database.SetInitializer(new MyTestContextInitializer());
    _dbContext = ContainerFactory.Container.GetInstance<IContext>();
    _testConnection = _dbContext.ConnectionString;
}

[TearDown]
public void Cleanup()
{
    _dbContext.Dispose();
    System.Data.Entity.Database.Delete(_testConnection);
}
Run Code Online (Sandbox Code Playgroud)

问题是System.Data.Entity.Database.SetInitializer在第一次测试后没有调用MyTestContextInitializer.

因此第二次测试失败了:

System.Data.EntityException:基础提供程序在Open上失败.
----> System.Data.SqlServerCe.SqlCeException:找不到数据库文件.检查数据库的路径

TIA任何指针

nunit entity-framework sql-server-ce-4

6
推荐指数
1
解决办法
4761
查看次数

SQL Server CE 4.0部署问题 - 哪些文件是必需的?

我正在尝试部署一个使用SQL Server CE 4.0数据库的小型Windows窗体应用程序.我不希望运行此应用程序的每个系统都必须安装SQL Server CE 4.0,所以我试图获得应用程序中包含的任何所需的DLL.

当我检查引用列表时,SQL Server CE 4.0的唯一引用是System.Data.SqlServerCe.包含该DLL的DLL,System.Data.SqlServerCe.dll在尝试连接到数据库时仍会导致以下错误:

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

我已经看过一些文章谈论不同版本的SQL Server CE,但就我所知,他们列出了其他版本的DLL.应用程序将运行的系统应该至少安装了安装了.NET 4.0的Windows 7,如果这样做有所不同的话.

我尝试了这里的步骤来添加文件,如链接所示:http://erikej.blogspot.com/2011/02/using-sql-server-compact-40-with.html

使用构建中包含的那些文件,程序编译时没有任何错误,但是当在辅助系统上运行时,GUI永远不会出现(公共Form1()的一部分包括从SQL CE数据库中获取数据的方法)和程序几秒后才关闭.事件查看器显示以下错误:

错误应用程序名称:Dispatch Review Assistant.exe,版本:1.0.0.0,时间戳:0x50915d3c错误模块名称:KERNELBASE.dll,版本:6.1.7601.17932,时间戳:0x503285c2异常代码:0xe0434352错误偏移量:0x000000000000caed错误进程ID: 0x1028错误应用程序启动时间:0x01cdb78c10761c73错误应用程序路径:C:\ Users\deLucain\Desktop\Release\Dispatch Review Assistant.exe错误模块路径:C:\ Windows\system32\KERNELBASE.dll报告ID:4e4f45e3-237f-11e2- bd76-14dae92102de

c# sql-server-ce-4

6
推荐指数
1
解决办法
8125
查看次数

无法加载具有不变名称"System.Data.SqlServerCe.4.0"的ADO.NET提供程序

实体框架提供程序类型"System.Data.Entity.SqlServerCompact.SqlCeProviderServices,EntityFramework.SqlServerCompact"在与固定名称"System.Data.SqlServerCe.4.0" ADO.NET提供程序的应用程序配置文件中注册无法加载.确保使用了程序集限定名称,并且程序集可供正在运行的应用程序使用.

以上是我尝试使用Breeze/Entity Framework创建元数据时收到的错误消息.Nuget似乎搞砸了一些事情,但是它并不明显是什么,并且它在尝试从哪里读取组件并不明显.任何想法都会受到欢迎.

.net entity-framework sql-server-ce-4 breeze visual-studio-2013

6
推荐指数
1
解决办法
7351
查看次数