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

时间:2015-12-31 14:22:25

标签: c# sql-server entity-framework

我正在使用:

  1. Windows 10
  2. Visual C#Express 2010
  3. SQL Server 2012 Express,但无法与VS正确集成。
  4. 我现在已经在VS 2010中将我的数据库重新创建为.fsi(而非.msi)数据库。

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

    我已经在网上搜寻了好几天的答案,但是使用最新,最昂贵的版本的人总是非常详细的分步指南。

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

    Database Explorer

    Data Source

    我尝试了各种编码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文件混在一起....所以任何帮助都会非常感激(例如,链接到一篇文章,涵盖这个相当奇怪的问题。)

4 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

如果您正在使用EF(主要是DB第一种方法),那么您的DB上下文类已经有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();
 }

答案 2 :(得分:0)

在数据库中将 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();
}

如果没有标识列,我将无法在DB中插入

答案 3 :(得分:0)

感谢大家的意见。 我试图使用.Add()但它没有作为有效选项。

我也无法通过在&amp;中键入行来手动输入行。使用Run SQL命令。因为它将db文件存储在根文件和调试文件夹中,有人说这是常见的,并且将属性更改为“永不复制”或者其他东西 - 无论如何,我将在2016年完成它!希望有些东西可行。

最佳, d