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; }
    }
}

使用しているLINQtoSQLクラスがあります。私はまた、機能する編集機能を持っており、次のようになっています:

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 に答える