我正在创建一个MVC 3文章应用程序并使用LINQ将其连接到SQL数据库。我正在尝试使用LINQ代码创建一篇新文章,并且我最终会遇到这些错误:
ArticleRepository.cs(41,13,41,47):错误CS1502:'System.Data.Linq.Table.InsertOnSubmit(NyjiGrunnur.ArticleTable)'的最佳重载方法匹配有一些无效的参数
ArticleRepository.cs(41,45,41,46):错误CS1503:参数1:无法从'NyjiGrunnur.Models.Article'转换为'NyjiGrunnur.ArticleTable'
添加文章功能:
public void AddArticle(Article s)
{
ArticleLINQDataContext db = new ArticleLINQDataContext();
//Article a = new Article { Id = s.Id, Content = s.Content, Name = s.Name, Subject = s.Subject, Created = (DateTime)s.Created };
Line 41: db.ArticleTables.InsertOnSubmit(s);
db.SubmitChanges();
}
我有Articles.cs模型:
namespace NyjiGrunnur.Models
{
public class Article
{
public int Id { get; set; }
public string Name { get; set; }
public string Content { get; set; }
public string Subject { get; set; }
public DateTime Created { get; set; }
}
}
我正在使用LINQ to SQL类。我也有一个有效的编辑功能,如下所示:
public void UpdateArticle(Article s)
{
ArticleLINQDataContext db = new ArticleLINQDataContext();
var a = (from article in db.ArticleTables
where article.Id == s.Id
select article).SingleOrDefault();
a.Name = s.Name;
a.Subject = s.Subject;
a.Content = s.Content;
a.Created = s.Created;
a.Id = s.Id;
db.SubmitChanges();
}
HomeController
也应该正常工作。
答案 0 :(得分:4)
正如错误试图告诉您的那样,您的LINQ to SQL类使用ArticleTable
类,这与Article
类不同。
您需要从ArticleTable
(视图模型)创建Article
(数据模型)实例,以便将其放入数据库中。
答案 1 :(得分:1)
看起来你正在使用AddArticle,但注释了映射:
public void AddArticle(Article s)
{
ArticleLINQDataContext db = new ArticleLINQDataContext();
ArticleTable a =
new ArticleTable {
Id = s.Id, // *see question below code sample
Content = s.Content,
Name = s.Name,
Subject = s.Subject,
Created = (DateTime)s.Created
};
db.ArticleTables.InsertOnSubmit(a); // <-- note it's "a" instead of "s"
db.SubmitChanges();
}
*是否自动生成Id
?如果是这样,插入时不应该设置它。