标签: sql-server-ce

使用SQLConnection连接到SQL CE db

非常直截了当的问题.我正在构建一个从SQL Server 2005实例读取数据的应用程序.我想在我的笔记本电脑上运行一些测试(没有SQL 2005),所以我正在考虑在本地数据库中交换以进行测试.

我正在使用VS2008,因此Compact Edition DB似乎是一个自然的选择.我原本希望换掉我的连接字符串,但似乎它只能让我使用SqlCeConnection而不是SqlConnection连接到CE数据库.任何方式,我可以在连接字符串中使用修饰符?

c# connection-string sql-server-ce

8
推荐指数
2
解决办法
6095
查看次数

SQLCE - Upsert(更新或插入) - 如何使用常用方法准备行?

以下是伪代码:

SqlCeResultSet myResultSet = cmd.ExecuteResultSet(Options...etc);
bool found = myResultSet.Seek();
if found {
    //do an Update
    myResultSet.Read() //make current

    //At this point we have a cursor positioned at a row to be edited
    myResultSet.SetString(1, "value for col 1");
    myResultSet.SetString(2, "value for col 2");
    //... etc... 
    myResultSet.SetString(100, "value for col 100");
    //i want to replace above with: CommonMethodToFillRowData(someRow)

    //finally update
    myResultSet.Update();

} else {
    //do an insert
    SqlCeUpdatableRecord myRec = myResultSet.CreateRecord();
    //set primaryKey
    myRec.SetInt32(0, pkValue);

    //At this point we have a cursor …
Run Code Online (Sandbox Code Playgroud)

.net c# sql-server-ce

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

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

如何让Entity Framework初始化我新创建的实体上的集合?

我正在尝试用一些IDatabaseIntialiser像这样的测试数据为我的数据库播种:

protected override void Seed(BlogDataContext context)
{
    // <snip>
    var post = context.Posts.Create();
    post.Title = "My Life On Twitter";
    // <snip properties>

    // Set tags
    post.Tags.Add(aspnetTag); // NullRefException
    post.Tags.Add(razorTag);
Run Code Online (Sandbox Code Playgroud)

Post实体看起来像这样:

public class Post
{
    // ...
    public virtual ICollection<Tag> Tags { get; set; }
Run Code Online (Sandbox Code Playgroud)

Bitbucket的完整实体:帖子标签.所有代码均在http://code.dantup.com/blog

但是,post.Tags为null,所以这不起作用.最初我是创建帖子new Post(),但是因为我正在调用CreateEF提供的方法,为什么集合没有初始化?

在这里实例化我自己的集合感觉很笨拙,如果我在构造函数中这样做,大概每次我从EF加载一个实体时,它都会在构造函数中创建集合,然后用一个包含实际数据的集合覆盖它. D B?

有没有办法告诉EF为我创建一个实体,包括我的集合/代理ICollections(假设ICollection是正确的选择)?

编辑:context.Configuration.ProxyCreationEnabled设置为true(默认情况下),这似乎是存在的原因

.net asp.net-mvc entity-framework sql-server-ce ef-code-first

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

使用Entity Framework 4将大量行插入SQL CE 4.0(性能问题)

我有一个带有几个表的小型SQL CE 4.0数据库,使用Entity Framework 4进行映射.

这是我的代码

foreach (String designation in newItemDesignations)
{
    ParameterData defaultValue = PDM.GetDefaultParameterData(designation);

    // Fill the ItemParameterDBO object with the data
    ItemParameterDBO dbParam = new ItemParameterDBO();
    dbParam.ItemID = dbItem.ID;
    dbParam.Designation = designation;    
    dbParam.High = defaultValue.High;
    dbParam.Low = defaultValue.Low;

    database.ItemParameterDBOes.AddObject(dbParam);
}

database.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

24 times每次newItemDesignations列表包含时,都会发生此代码exactly 525 elements.这总共需要12600行.

整个过程持续509 seconds.我猜这对12600行来说太多了.

我知道我在打电话SaveChanges 24 times.目前,应用程序设计不允许我将所有插入放入单个事务(with SaveChanges).但是,看看单个事务会发生什么.509 / 24 = 21 seconds或者a 40 ms per row. …

c# database insert sql-server-ce entity-framework-4

8
推荐指数
2
解决办法
4543
查看次数

本地数据库抛出字节数组截断到8000的异常长度

我正在尝试将Map控件中的快照作为WritableBitmap,将其转换为字节数组并将其保存在本地数据库中.它工作正常(我可以将字节数组转换回图像),直到我将更改提交给数据库.此时它会抛出异常"字节数组截断到8000的长度".我没有找到任何关于字节数组限制的文档.有谁知道如何增加8000的限制?我的字节数组是我的模型的成员:

private byte[] _locationImage;
[Column]
public byte[] LocationImage
{
   get { return _locationImage; }
   set
   {
      if (_locationImage != value)
      {
         NotifyPropertyChanging("LocationImage");
         _locationImage = value;
         NotifyPropertyChanged("LocationImage");
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

database sql-server-ce linq-to-sql windows-phone-7

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

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

列名无效.[节点名称(如果有)= t0,列名=版本]

我在尝试SQLCE在Windows Phone Mango应用程序中查询数据库时遇到问题.

我执行时遇到异常

foreach (var item in myDataContext.MyTable.Select(item => item))

The column name is not valid. [ Node name (if any) = t0,Column name = version ]

奇怪的是,当我基于任何单个列执行查询时,它工作正常

foreach (var item in myDataContext.MyTable.Select(item => item.SomeColumn))

知道这里有什么不对吗?

c# sql-server-ce linq-to-sql windows-phone-7.1

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

实体框架4.3.1代码优先:创建数据库但不创建表

今天我将旧的应用程序从EF 4.2迁移到EF 4.3.1.在我的应用程序中,我使用CodeFirst,但在迁移后它停止工作,并找不到原因.为了清除任何其他可能的问题,我决定创建一个小型控制台应用程序,并使用ADO团队发布的数据迁移演练:

http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-code-based-migrations-walkthrough.aspx

我完全复制了博客的代码,但是没有正确工作(创建数据库,创建模式,插入博客),我得到了一些错误:

  • 只创建了DB,但没有表
  • 我收到此错误Conversion failed when converting datetime from character string."

所有这些都在SQL Server 2005 Express上.

我尝试使用SQL Compact,但结果相同(不同的错误):

  • 只创建了DB(在本例中是bin文件夹中的sdf文件),但没有表
  • 我收到了错误 The format of the specified date or time datepart is not valid. [ String = 2012-04-19T13.21.04.364 ]

我认为在这两种情况下,问题都在于EF希望作为第一次迁移进入的界限:

INSERT INTO [__MigrationHistory] ([MigrationId], [CreatedOn], [Model], [ProductVersion]) 
VALUES ('201204191321184_init', '2012-04-19T13.21.04.364',  ...., '4.3.1');
Run Code Online (Sandbox Code Playgroud)

显然与格式有关.是错的,至少在我的语言环境中,它应该是:

这是一个错误还是什么?它始终与其他日期时间一起使用.

更新 我尝试将其作为显式迁移运行,并使用-verbose标志设置应用迁移,这是我得到的:

PM> Update-Database -Verbose
Using NuGet project 'ConsoleApplication2'.
Using StartUp project 'ConsoleApplication2'.
Target database is: '|DataDirectory|ConsoleApplication2.ConsoleApplication1.BlogContext.sdf' (DataSource: |DataDirectory|ConsoleApplication2.ConsoleApplication1.BlogContext.sdf, Provider: System.Data.SqlServerCe.4.0, Origin: Convention).
Applying …
Run Code Online (Sandbox Code Playgroud)

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

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

如何修复"在应用程序配置中找不到连接名称'LocalSqlServer'或连接字符串为空." 错误?

我有一个使用SQL Server CE 4.0和Entity Framework 4.0的ASP.NET项目.它在我的本地计算机上工作正常.

但是,当我将它移动到远程服务器,并尝试登录到程序的管理部分时,我收到以下错误:

The connection name 'LocalSqlServer' was not found in the applications configuration or the connection string is empty.
Run Code Online (Sandbox Code Playgroud)

它引用了远程服务器上machine.config中的以下行:

Line 237:    <membership>
Line 238:      <providers>
Line 239:        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
Line 240:      </providers>
Line 241:    </membership>
Run Code Online (Sandbox Code Playgroud)

现在,我的web.config中没有"AspNetSqlMembershipProvider"语句,它引用了一个名为"LocalSqlServer"的连接字符串.相反,我有以下内容:

<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider" connectionStringName="PUGConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" applicationName="/" />
  </providers>
</membership>
Run Code Online (Sandbox Code Playgroud)

这实际上在本地工作.连接字符串的名称是PUGConnection,而不是LocalSqlServer. …

asp.net asp.net-membership membership-provider sql-server-ce entity-framework-4

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