2016-04-28 64 views
0

我有一个名为在基于服务的数据库类非常基本的表,看起来像这样:服务基于数据库和LINQ to SQL中,插入新行

类别ID:主键,身份

类别名称:只是一个nvarchar(max)列

我添加了一个LINQ到SQL类项目,和我的窗体的构造函数之前初始化权它:

DataClasses1DataContext dc = new DataClasses1DataContext(); 

现在我只是想做一些简单的事情:添加一个新的行到类别表。 我曾尝试这样的:

var c = new Category() 
{ 
    CategoryName = "test" 
}; 
dc.Categories.InsertOnSubmit(c); 
dc.SubmitChanges(); 

我与类别ID = 4试了两个,没有它(4将是下一个可用的ID)。

我也设置数据库的副本输出目录属性复制,如果更新。我甚至尝试从CategoryID中移除标识(尽管这不应该是一个好的解决方案),但是后来我得到了一个异常,即CategoryID不应该为null(即使将其设置为4)。

(我没有使用实体框架)。

+0

是CategoryID设置为主键并设置为在您的数据库中自动增量?你有错误吗?如果是这样请提供。你可以把db.SubmitChanges放到try catch中,如果你没有收到错误... – Waragi

+0

尝试dc.Categories.Add(c); dc.SaveChanges(); – techspider

+0

你可以粘贴你的EF生成的Category类;我认为它不携带数据库的身份信息 – techspider

回答

0

发现问题(有点)。该代码与Visual Studio 2013完美兼容,因此我相当确定VS2015存在这个问题。

+0

这不能是Visual Studio版本的问题。恐怕你搞砸了连接字符串为例,并在不同的数据库中保存新的行,然后在检查结果的数据库中保存新的行 – Fabio

+0

我使用VS为基于服务的数据库生成的相同连接字符串。 – hungariandude

1

我想我找到了一个在Visual Studio 2015中可用的解决方案。 转到您的服务器资源管理器并打开.mdf的属性。复制连接字符串并将其粘贴到右括号中,并将其放在逐字串字符串(@“”)中,并删除里面的所有引号(如果有的话)。

DataClasses1DataContext dc = new DataClasses1DataContext(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\FilePathHere\Database.mdf;Integrated Security=True");