C#LINQ:如何提交对象数据库作为新记录

问题描述:

我有以下对象:C#LINQ:如何提交对象数据库作为新记录

namespace LearnLINQ1 
{ 
    [Table(Name="testMe")] 
    public class SubmitTest 
    { 
     [Column(Name="FirstName")] 
     public string FirstName { get; set; } 

     [Column(Name = "LastName")] 
     public string LastName { get; set; } 

     [Column(Name = "PhoneNumber")] 
     public int PhoneNumber { get; set; } 

     linqLayerDataContext db; 
    } 
} 

,我已经使用了同样的事情与构造函数:

namespace LearnLINQ1 
{ 
    [Table(Name="testMe")] 
    public class SubmitTest 
    { 
     [Column(Name="FirstName")] 
     public string FirstName { get; set; } 

     [Column(Name = "LastName")] 
     public string LastName { get; set; } 

     [Column(Name = "PhoneNumber")] 
     public int PhoneNumber { get; set; } 

     linqLayerDataContext db; 

     //constructor 
     public SubmitTest(string first, string last, int phone, linqLayerDataContext db) 
     { 
      this.FirstName = first; 
      this.LastName = last; 
      this.PhoneNumber = phone; 
      this.db = db; 
     } 

    } 
} 

SubmitTest test = new SubmitTest { FirstName = "Jeremy", LastName = "Stafford", PhoneNumber = 23 }; 
db.testMes.InsertOnSubmit(test); 

但即时得到的错误:使用下面的代码实例化对象,并试图将其作为一个新的记录添加到数据库米或:

Error 1 The best overloaded method match for 'System.Data.Linq.Table.InsertOnSubmit(LearnLINQ1.testMe)' has some invalid arguments C:\Users\Jeremy\Documents\Visual Studio 2010\Projects\LearnLINQ1\LearnLINQ1\Form1.cs 42 13 LearnLINQ1

Error 2 Argument 1: cannot convert from 'LearnLINQ1.SubmitTest' to 'LearnLINQ1.testMe' C:\Users\Jeremy\Documents\Visual Studio 2010\Projects\LearnLINQ1\LearnLINQ1\Form1.cs 42 39 LearnLINQ1

我不确定在类定义中是否有东西缺失...有点新概念。有人能指引我朝着正确的方向吗?

================================ UPDATE:好了,所以我做了一些改动

的客户类:

namespace LearnLINQ1 
{ 

    public class Customer 
    { 
     [Table(Name = "testMe")] 
     public class SubmitTest 
     { 
      [Column(Name = "FirstName")] 
      public string FirstName { get; set; } 

      [Column(Name = "LastName")] 
      public string LastName { get; set; } 

      [Column(Name = "PhoneNumber")] 
      public int PhoneNumber { get; set; } 
     } 
    } 
} 

并测试代码:

namespace LearnLINQ1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 

      linqTestDataContext db = new linqTestDataContext(); 

      Table<Customer> Customers = db.GetTable<Customer>(); 
      var cus = new Customer { FirstName = "Jeremy", Lastname = "Stafford", Age = 31 }; 
      db.Customers.InsertOnSubmit(cus); 

      db.SubmitChanges(); 
     } 
    } 
} 

现在的问题是与客户类。它给了以下错误:

Error 1 Missing partial modifier on declaration of type 'LearnLINQ1.Customer'; another partial declaration of this type exists C:\Users\Jeremy\Documents\Visual Studio 2010\Projects\LearnLINQ1\LearnLINQ1\Customer.cs 11 18 LearnLINQ1

+1

应该有数据上下文另一个集合 - 一些所谓的像'SubmitTests'。基本上,你试图将一个'SubmitTest'对象存储到'TestMe'对象的集合中 - 这不起作用... – 2011-05-16 21:17:55

+0

你可以使用你提供的构造函数:SubmitTest test = new SubmitTest(“Jeremy “,”Stafford“,23,db); – Francisco 2011-05-16 22:42:01

+0

nm,将其撕下并重新启动。由于我没有意识到这些对象是由数据上下文推断的,所以产生了一些冲突。 – Sinaesthetic 2011-05-17 01:32:40

LearnLINQ1.testMe是你需要创建对象不LearnLINQ1.SubmitTest

+0

我如何从一个名为testMe的类不存在的实例化对象testMe? – Sinaesthetic 2011-05-16 23:19:41