繁体   English   中英

ADO.NET实体模型:无法以编程方式插入db

[英]ADO.NET Entity Model: cannot insert into db programatically

我在用:

  1. Windows 10
  2. Visual C#Express 2010
  3. SQL Server 2012 Express,但无法与VS正确集成。

现在,我已经在VS 2010中将数据库重新创建为.fsi(不是.msi)数据库。

可以,但是无法解决如何通过数据模型进行选择/插入等问题,而不是麻烦解决创建连接,参数等问题的问题(效果很好)。

我已经在网上拖了好几天才能找到答案,但是从使用最新,最昂贵的版本开始,它总是非常详尽的分步指南。

我已经设置了数据源和连接(到完全用VS构建的数据库-甚至不知道它是否正在使用仍受支持的SQL引擎)

数据库浏览器

数据源

我尝试了多种编码INSERT的方法,这些方法SaveChanges()结尾,例如

 using (TutorBrainsDBEntities2 tB = new TutorBrainsDBEntities2())
 {
     var cl = new Client();
     cl.ClientFirstName  "XXXXX";
     cl.ClientLastName = "XXXXX";

     tB.SaveChanges();
 }

我还在类中using System.Data.EntityModel ,在解决方案中也有对System.Data.Entity的引用。

知道这不是最好的一天,但是我在这里承受着很大的压力,并且不想使用一些过于复杂的Excel文件。...因此,我们将不胜感激(例如链接到涵盖这个相当奇怪的问题的文章。)

您创建了对象,但实际上从未将其添加到数据上下文中。 像这样:

var cl = new Client();
cl.ClientFirstName = "XXXXX";
cl.ClientLastName = "XXXXX";
tb.Clients.Add(cl); // <-- add the entity to the context
tB.SaveChanges();

否则,没有将cl链接到数据上下文的方法,它只是一个内存对象,就像其他对象一样。

如果您使用的是EF(主要是数据库优先方法),则您的数据库上下文类已经具有Clients实体集合的引用,在这种情况下,

 using (TutorBrainsDBEntities2 tB = new TutorBrainsDBEntities2())
 {
 var cl = new Client();
 cl.ClientFirstName = "XXXXX";
 cl.ClientLastName = "XXXXX";
 tB.Clients.Add(cl); //Add this line to add your newly created clients to the collection
 tB.SaveChanges();
 }

只需将数据库中的ClientID设置为SSMS中的标识列,然后尝试

using (TutorBrainsDBEntities2 tB = new TutorBrainsDBEntities2())
 {
 var cl = new Client();
 cl.ClientFirstName = "XXXXX";
 cl.ClientLastName = "XXXXX";
 tB.Clients.Add(cl); //Add this line to add your newly created clients to the collection
 tB.SaveChanges();
}

没有标识列,我将无法插入数据库

感谢大家的意见。 我试图使用.Add(),但它不是有效选项。

我也无法通过使用“运行SQL”命令在&中键入行来将它们手动输入到表中。 由于它已将db文件存储在根文件夹和调试文件夹中,有人说这很常见,并将属性更改为“从不复制”或其他内容-无论如何,我将在2016年完成它! 希望有什么会起作用。

最好,D

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM