标签: sql-server-ce

有没有人使用(或考虑使用)Sql Server Compact Edition?

我一直在准备提供有关SQL Server Compact Edition 3.5(SP1 - 最近发布)的演示文稿,我想知道是否有人设计(或考虑设计)具有SQL Server CE 3.5(或更早版本)的系统?

特别是,有没有人想过(或经历过)使用SQLCE作为离线数据存储的解决方案(作为连接系统设计的一部分)?

与其前辈相比,3.5版看起来相当丰富,是否已经准备好进行认真考虑(现在它支持LINQ to SQL,标识列和各种重要的T-SQL)?

如果你需要一个轻量级的低占用空间的基于文件的数据库(特别是如果它需要在移动设备和桌面系统上支持),或者有更好的选择,你会考虑使用它吗?

database sql-server windows-mobile sql-server-ce

7
推荐指数
2
解决办法
2221
查看次数

在Sql Server CE中收缩还是压缩?

我正在使用Visual Studio 2008.我是sqlce的新手.我正在检查sdf文件,如果sdf不存在,我创建然后插入大约5000行到我的sqlce db.If sdf存在,首先我删除所有表的行然后将这些记录插入到现有的表中.插入完成后,我正在压缩数据库.顺便说一句,压缩持续大约13秒.我知道一个调用Shrink.Shrink和Compact的方法使db变小但是在这个scenerio中我应该使用哪个?如何在更短的时间内进行压缩?我不需要备份sdf和紧凑后,我删除旧的sdf.i阅读这个主题但无法决定我应该使用.

.net sql-server-ce

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

Visual Studio 2008:调试时不要部署SQL Server Compact 3.5

我正在使用VS2008为Windows CE 5.0设备(Datalogic Kyman)创建Compact Framework应用程序.我在我的应用程序中使用SQL Server Compact 3.5.但是,我正在调试仍然安装了Windows CE 4.2的Kyman(通过USB使用移动设备中心连接).我的问题:

VS2008无法识别设备上已安装SQL Server Compact并要求我每次从IDE运行应用程序时安装SQL Server Compact .安装程序向我显示有关SQL Server Compact CAB文件不适用于此设备的警告,但安装工作没有错误,应用程序也正常工作.

我已经取消选中"始终部署最新的.NET版本"这个框(不知道它的英文名称是什么,使用德语VS2008),但这没有用.

如何在每次启动应用程序之前告诉Visual Studio 不要安装SQL Server?

windows-ce visual-studio-2008 sql-server-ce

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

如何连接SDF数据库?我试过没有连接字符串似乎工作

我已尝试在我的本地数据库的连接字符串上进行50多次不同的尝试,似乎没有任何工作.我本质上只是试图打开数据库文件的连接,所以我可以转储我从excel电子表格中提取的数据.我正在使用Visual C#制作离线winform应用程序.

无论我在app.config中尝试什么连接字符串,它总是在尝试将"dReader"写入数据库时​​失败.

错误通常取决于我尝试的字符串:

"建立与SQL Server的连接时发生与网络相关或特定于实例的错误.未找到服务器或无法访问服务器.验证实例名称是否正确以及SQL Server是否配置为允许远程连接.(提供程序:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)"

我已经浏览了许多在线示例和资源,似乎没有任何工作.我希望这里有人可以指出它为什么会失败.

这是我最新形式的app.config:

<connectionStrings>
    <add name="DDP_Project.Properties.Settings.DDP_DatabaseConnectionString"
        connectionString="Data Source=E:\Other DDP Projects\DDP_Project_SDF\DDP_Project\DDP_Database.sdf;"
        providerName="Microsoft.SqlServerCe.Client.3.5" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)

这是我的表单代码:

    private void Profiles_Click(object sender, EventArgs e)
    {
        profilesDialog.FileName = "[YOUR_UPLOAD_FILE_HERE]";
        var result = profilesDialog.ShowDialog();

        if (result == DialogResult.OK)
        {
            HandleFileSelection();
        }
    }

    private void HandleFileSelection()
    {
        var file = profilesDialog.FileName;


         // Create a connection to the file datafile.sdf in the program folder
    string dbfile = new System.IO.FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).DirectoryName + "\\DDP_Database.sdf";
    SqlCeConnection connection = new SqlCeConnection("datasource=" + dbfile);


    string …
Run Code Online (Sandbox Code Playgroud)

c# connection-string visual-studio-2010 sql-server-ce

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

.NET MVC:如何在SQL CE的Code-First中定义ntext字段?

我有以下型号:

public class Blog
{
    public int BlogID { get; set; }
    public int CategoryID { get; set; }

    [MaxLength(70)]
    [Required]
    public string BlogTitle { get; set; }

    [Column(TypeName="ntext")]
    public string BlogContent { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我已手动将字段设置为数据库中BlogContentntext类型(16字节)SQL CE4.

但是,每次我尝试插入超过4000个字符的文本时,都会出现以下错误:

一个或多个实体的验证失败.有关详细信息,请参阅"EntityValidationErrors"属性

我试过设置注释[Column(TypeName="ntext")],但这没有区别.当我循环EntityValidationErrors收集时,问题是由BlogContent错误引起的:

字符串不能超过4000个字符

如何定义我的模型以获得ntext字段BlogContent

似乎忽略了任何数据注释; 假设MaxLength默认情况下,no的字符串限制为4000个字符.

ntext code-first sql-server-ce

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

Visual Studio C#和SQL Compact的基本入门(连接,选择,插入)?

我正在尝试用SQL CE学习C#,以便我的程序可以记住东西.

我创建了一个数据库,可以连接到它:

SqlCeConnection conn = 
         new SqlCeConnection(@"Data Source=|DataDirectory|\dbJournal.sdf");
conn.Open();
Run Code Online (Sandbox Code Playgroud)

并且它连接正确,我想因为如果我重命名dbJournal.sdf错误它不调试正确.

假设我想做一个简单的SELECT查询.

(SELECT * FROM tblJournal)
Run Code Online (Sandbox Code Playgroud)

怎么做的?

简单的插入怎么样?

(INSERT TO tblJournal (column1, column2, column2) VALUES 
                                        (value1, value2, value3))
Run Code Online (Sandbox Code Playgroud)

我习惯了PHP和MySQL(正如你可以看到的那样:o))

c# visual-studio-2010 sql-server-ce

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

EF4 Code First + SQL Server CE:以原子方式保存双向引用

我想保存一些具有双向关系的实体(两端的导航属性).这是通过2次调用来完成的context.SaveChanges().

[关于我的模型,映射以及我如何到达那里的完整细节都在折叠之后.]

public void Save(){

     var t = new Transfer();
     var ti1 = new TransferItem();
     var ti2 = new TransferItem();

     //deal with the types with nullable FKs first
     t.TransferIncomeItem = ti1;
     t.TransferExpenseItem = ti2;

     context.Transfers.Add(t);
     context.Operations.Add(ti1);
     context.Operations.Add(ti2);

     //save, so all objects get assigned their Ids
     context.SaveChanges();

     //set up the "optional" half of the relationship
     ti1.Transfer = t;
     ti2.Transfer = t;
     context.SaveChanges();
} 
Run Code Online (Sandbox Code Playgroud)

一切都很好,但如果在两次调用之间发生雷击,确保数据库不一致怎么样SaveChanges()

输入TransactionScope...

public void Save(){
    using (var tt = new TransactionScope())
    { …
Run Code Online (Sandbox Code Playgroud)

transactions sql-server-ce entity-framework-4 ef-code-first

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

SQL Server CE:如果存在则更新else插入

INSERT如果SQL Server CE数据库表中尚不存在,UPDATE如果它存在,我怎么能连续存在?

我已经尝试了很多SQL查询并不断收到错误.这不起作用.

IF EXISTS (SELECT * FROM Table1 WHERE Column1='SomeValue')
    UPDATE Table1 SET (...) WHERE Column1='SomeValue'
ELSE
    INSERT INTO Table1 VALUES (...)
Run Code Online (Sandbox Code Playgroud)

更新:

我发现这对我有用.任何其他好的建议都是受欢迎的.

    INSERT INTO Table1 VALUES (...)
    SELECT (........)
    WHERE NOT Exists (SELECT ........)
    -- INSERT with Default value if not exist. Next, UPDATE it
    UPDATE Table1 SET (...) WHERE Column1='SomeValue'
Run Code Online (Sandbox Code Playgroud)

sql sql-server-ce

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

将远程SQL Server数据库与本地SQL Server Compact数据库同步的最佳方法?

我意识到这是一个讨论很多的话题,但我看到的所有建议似乎都涉及直接访问SQL Server,在我们的实例中并不理想.

我们的场景是一个远程SQL Server数据库(例如)100个表.我们正在开发一个轻量级桌面应用程序,它将使用SQL Server Compact数据库并定期与远程服务器同步(例如)20个表的子集.

我想控制复制的发生方式,因为速度是我们的主要问题,因为远程服务器距离数千英里远.

此外,我不需要同步每个表中的所有记录 - 只有与每个用户相关的记录.

我非常喜欢SQL Merge工具,但它要求客户端连接到远程SQL Server.目前这是不可能的,我们正在考虑通过我们的应用程序或其他方法访问的Web服务与远程服务器连接.

欢迎任何建议.

UPDATE

只是为了澄清,互联网连接是间歇性的,这是我们需要同步这两个数据库的主要原因.

c# sql sql-server web-services sql-server-ce

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

EF5使用点名生成SQL Server CE约束

我正在构建一个.NET断开连接的客户端 - 服务器应用程序,它使用Entity Framework 5(EF5)从POCO生成SQL Server CE 4.0数据库.该应用程序允许用户从网络SQL Server执行数据的批量复制到客户端的SQL Server CE数据库.由于EF5创建的约束和索引,这非常(非常)缓慢.暂时删除约束和索引会将30分钟的等待时间减少到1分钟或更短.

在开始批量复制之前,应用程序执行查询以从SQL Server CE表中删除约束和索引.但是,命令失败,因为EF5创建的约束名称包括表模式名称,点和表名称.由于解析问题,约束名称中的点导致drop命令失败.

例如,POCO 使用主键约束Customer创建表.数据库按预期执行.dbo.CustomerPK_dbo.Customer_Id

但是,在执行非查询时:

 ALTER TABLE Customer DROP CONSTRAINT PK_dbo.Customer;
Run Code Online (Sandbox Code Playgroud)

SQL Server Compact ADO.NET数据提供程序返回错误:

解析查询时出错.
[令牌行号= 1,令牌行偏移= 57,令牌错误=.]

当然,使用DataContext没有外键的辅助对象生成没有约束的数据库,然后在以后添加它们的工作; 但是,这需要维护两个DataContext对象,并希望不要忘记保持更新.因此,我正在寻找两种解决方案之一:

  1. 以这样的方式编写DROP语句.字符被解析

  2. 防止EF5使用.约束和索引名称中的字符

预先感谢您的帮助!

sql entity-framework poco sql-server-ce ef-code-first

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