Объект, который вы передаете InsertOnSubmit
, должен быть одним из ваших классов LINQ-to-SQL.
В этом случае вы пытаетесь вставить объект типа, о котором LINQ-to-SQL понятия не имеет (один из ваших бизнес-объектов, а не тип LINQ-to-SQL).
Есть несколько способов преодолеть это. Один раз - преобразовать бизнес-объект в соответствующий класс LINQ-to-SQL в вашем репозитории. Другой - создать неявное приведение между ними и позволить .NET обрабатывать все остальное.
Код репозитория
public MaterialsObj createMaterials(MaterialsObj materialsObj)
{
CrMVC.Models.Material mat = new CrMVC.Models.Material();
// copy properties to the Materials object from materialsObj
db.Materials.InsertOnSubmit(mat);
materialsObject.IdField = mat.IdField;
return materialsObj;
}
Неявный приведенный код (метод добавлен в класс Business Object)
public static implicit operator CrMVC.Models.Material
(CrMVC.BusinessObjects.MaterialsObj)
{
// Add conversion code here
}