1

我正在制作一个 MVC 3 Article 应用程序并使用 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也应该可以正常工作。

4

2 回答 2

4

正如错误试图告诉您的那样,您的 LINQ to SQL 类使用ArticleTable该类,该类与Article该类不同。

您需要ArticleTable从(视图模型)创建一个(数据模型)实例,Article以便将其放入数据库中。

于 2013-03-12T14:38:53.137 回答
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自动生成的吗?如果是这样,您不应该在插入时设置它。

于 2013-03-12T14:43:00.630 回答