#c# #linq-to-sql #insert
#c# #linq-to-sql #вставить
Вопрос:
У меня есть следующий объект:
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);
Но я получаю ошибку:
Ошибка 1 Наилучший перегруженный метод соответствует ‘System.Data.Linq.Таблица.InsertOnSubmit(LearnLINQ1.TestMe)’ имеет некоторые недопустимые аргументы C:UsersJeremyDocumentsVisual Studio 2010 ProjectsLearnLINQ1LearnLINQ1Form1.cs 42 13 LearnLINQ1
Ошибка 2 Аргумент 1: не удается преобразовать из ‘LearnLINQ1.Отправить’ в ‘LearnLINQ1.TestMe’ C:UsersJeremyDocumentsVisual Studio 2010 Projects LearnLINQ1LearnLINQ1Form1.cs 42 39 LearnLINQ1
Я не уверен, что в определении класса чего-то не хватает… концепция вроде как новая. Может кто-нибудь указать мне правильное направление?
================================ ОБНОВЛЕНИЕ: Хорошо, я внес некоторые изменения
класс customer:
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();
}
}
}
Теперь проблема с классом customer. выдает следующую ошибку:
Ошибка 1 Отсутствует частичный модификатор в объявлении типа ‘LearnLINQ1.Customer’; существует другое частичное объявление этого типа C:UsersJeremyDocumentsVisual Studio 2010 Projects LearnLINQ1LearnLINQ1Customer.cs 11 18 LearnLINQ1
Комментарии:
1. В контексте данных должна быть другая коллекция — что-то вроде
SubmitTests
. По сути, вы пытаетесь сохранитьSubmitTest
объект в коллекциюTestMe
объектов — это просто не работает…2. Вы могли бы также использовать предоставленный вами конструктор: SubmitTest test = new SubmitTest («Джереми», «Стаффорд», 23, db);
3. нм, разорвал его и перезапустил. были некоторые конфликты, вызванные тем фактом, что я не понимал, что эти объекты были выведены из контекста данных.
Ответ №1:
LearnLINQ1.TestMe — это объект, который вам нужно создать, а не LearnLINQ1.Отправить
Комментарии:
1. как мне создать экземпляр объекта TestMe из класса с именем TestMe, который не существует?