我在使用linq代码成功执行的表中提交更改时遇到问题,因为它没有保存表中的更改。
有人说你的桌子必须有主键才能提交更改,但我的桌子上有主键。
有人说使用integrated security = true但它会生成异常无效的关键字集成安全性
这是我的连接字符串
<add name="POSConnectionString" connectionString="Persist Security Info=False; Data Source=|DataDirectory|\App_Data\POS.sdf; mode=Read Write;"
providerName="Microsoft.SqlServerCe.Client.4.0" />
在表格中插入数据的代码
public bool InsertItem(Item item)
{
try
{
using (SqlCeConnection conn = new SqlCeConnection(connectionString))
{
using (POSContext db = new POSContext(conn))
{
db.Items.InsertOnSubmit(item);
db.SubmitChanges();
return true;
}
}
}
catch (Exception ex)
{
return false;
}
}
这是我的表脚本
CREATE TABLE [Item] (
[ItemID] int IDENTITY (1,1) NOT NULL
, [ItemName] nvarchar(100) NOT NULL
, [ItemCode] nvarchar(100) NOT NULL
, [Weight] int NOT NULL
, [IsActive] bit NOT NULL
, [Stock] int NULL
, [UnitID] int NULL
);
GO
ALTER TABLE [Item] ADD CONSTRAINT [PK_Item] PRIMARY KEY ([ItemID]);
GO
我正在使用Windows窗体应用程序开发 数据库Sql server压缩数据库4.0 Visual Studio 2012
答案 0 :(得分:2)
我通过将数据库属性更改为不复制来获得解决方案,因为它在bin / debug中创建数据库副本并保存更改
答案 1 :(得分:0)
表中是否有自动增量(标识)列。要使用Linq插入数据,您必须在表上将Identity列作为主键。
答案 2 :(得分:0)
我遇到了同样的问题。因此,在构建项目时,Visual Studio会覆盖您的数据库,并且它具有dafault值。尝试从&#34; bin / debug&#34;启动它。在您的项目目录中。希望它会有所帮助。