none
用sql server compact+ado.net实体模型时int类型的字段做主键的表无法插入数据,怎么解决? RRS feed

  • 常规讨论

  • 开发环境 vs 2010,项目类型是windows from,数据库用的是sql server compact 3.5,数据库操作想用ado.net 实体模型

    现在遇到的问题是我的表里面有用int类型的字段作为主键的表,然后插入数据的时候报错,提示"SQL Server Compact 不支持服务器生成的项和服务器生成的值",网上说是SQL Server Compact不支持自增型主键,可是我发现SQL Server Compact里面是可以建立带有自动增长主键的表的,用数据库连接工具去操作这个数据库也是可以手动添加数据的,可是为什么用代码就不行呢,我的代码如下,非常简单的插入:

    Model1Container model1 = new Model1Container();
    model1.AddToUser集(user);//有一张表叫做User
    model1.SaveChanges();

    2013年12月4日 3:31

全部回复

  • 你 Trace 一下插入的语句是什么。
    2013年12月4日 3:42
  • 换成uniqueidentifier类型

    http://feiyun0112.cnblogs.com/

    2013年12月4日 4:01
    版主
  • 你好,

    sql server compact 3.5版本有可能不支持(没找到相关资料).但在4.0后支持自增长列的:

    SQL Server Compact 4.0 与实体框架一起使用时,仅在键的类型为标识列的情况下支持具有服务器生成的键或值的实体。使用实体框架时,实体的键可能被标记为服务器生成的。这样,数据库就可以在插入时或创建实体时生成键值。此外,可以将实体的零个或多个属性标记为服务器生成的值。有关详细信息,请参阅实体框架文档中的 Store Generated Pattern(存储生成的模式)主题。实体框架允许您定义具有服务器生成的键或值的实体类型。对具有服务器生成的值(类型不是标识)的实体进行的数据处理操作会引发“不支持”异常。

  • 可以在这里看到:

  • http://technet.microsoft.com/zh-cn/library/cc835494.aspx


  • We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

2013年12月4日 5:19
版主