使用实体框架插入记录(数据库优先)

时间:2012-11-07 00:44:37

标签: asp.net entity-framework linq-to-sql linq-to-entities entity-relationship

有3个数据库表(电影,评论,用户)

评论表包括(MemeberID,MovieID,评论文本,评分,评论日期) (评论中的MemeberID和MovieID是成员表和电影表的FK) 电影可以有很多评论,我正在尝试为电影添加评论

即使我有电影课和会员班,我也有问题,为了插入评论,我需要将它引用到电影和用户,链接它们,我不知道该怎么做

此代码出错:

" The relationship between the two objects cannot be defined because they are attached to different ObjectContext objects. "

这是我的代码......

public bool InsertNewReview(Movie _TheMovie, Member _TheMember, string _Text, byte _Rate, DateTime _ReviewDate)
    {

       Review ReviewToInsert = new Review()
            {
                MovieID = _TheMovie.MovieID,
                MemberID = _TheMember.MemberID,
                Movie = _TheMovie,
                Member =  _TheMember,
                Rate = _Rate,
                ReviewDate = _ReviewDate,
                ReviewText = _Text
            };

        videoLib.Reviews.AddObject(ReviewToInsert);
        videoLib.SaveChanges();

            return true;

    }

...

要向Review类添加更多数据

图片:here

...

和表:(“所有列”不是数据库表中的字段)

图片:here

2 个答案:

答案 0 :(得分:0)

你能尝试这样吗

Review ReviewToInsert = videoLib.Reviews.CreateObject();
ReviewToInsert.MovieID = _TheMovie.MovieID
...
...
videoLib.Reviews.AddObject(ReviewToInsert);
videoLib.SaveChanges();

答案 1 :(得分:0)

我有一个解决方案,我只需要定义MovieID,MemberID,而不是使用他们的对象

并使用try& catch,检测同一行中是否有相同的MovieID(fk)和MemberID(fk)(因为评论在数据库中没有自己的id)

   public bool InsertNewReview(string _MovieID, int _MemberID, string _Text, byte _Rate, DateTime _ReviewDate)
    {
        try
        {
            Review ReviewToInsert = new Review()
            {
                Rate = _Rate,
                ReviewDate = _ReviewDate,
                ReviewText = _Text,
                MovieID = _MovieID,
                MemberID = _MemberID
            };

            videoLib.Reviews.AddObject(ReviewToInsert);
            videoLib.SaveChanges();
            return true;
        }

        catch
        {
            return false;
        }
    }
相关问题