首页 新闻 会员 周边 捐助

EF,操作两张相关联的表,一对一的关系时,出现更新条目出错

0
[已解决问题] 解决于 2014-03-17 11:11

EF,操作两张相关联的表,一对一的关系时,出现更新条目出错,请问谁知道怎么解决这个问题,我查了资料,说要标识主外键,我引入命名空间System.ComponentModel.DataAnnotations但是,点不出[ForeignKey]

EF
问题补充:
public JsonResult EditBaiDuAutoPush(Application.Admin.Dto.AutoPushDto dto)
        {
            if (dto.Id > 0)
            {
                var auto = autoPushService.Get(dto.Id);
                if (auto != null)
                {
                        auto.Name = string.IsNullOrEmpty(dto.Name) ? "" : dto.Name.Trim();
                        auto.Remark = string.IsNullOrEmpty(dto.Remark) ? "" : dto.Remark.Trim();
                        auto.IntervalTime = dto.IntervalTime;
                        auto.ExpiredDateTime = dto.ExpiredDateTime;
                        autoPushService.Modify(auto, this.WorkContext.CurrentUser);

                        var content = contentService.Get(dto.ContentId);
                        if (content != null && content.Id > 0)
                        {
                            content.Content = string.IsNullOrEmpty(dto.Content) ? "" : dto.Content.Trim();
                            contentService.Modify(content, this.WorkContext.CurrentUser);
                        }

                }
            }
            var data = this.GetAutoPushTrueState().OrderByDescending(e => e.Id).ToList();
            var model = new GridModel<Application.Admin.Dto.AutoPushDto>
            {
                Data = data,
                Total = data.Count()
            };
            return new JsonResult { Data = model, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
        }
View Code
今年过年前瘦8斤的主页 今年过年前瘦8斤 | 初学一级 | 园豆:94
提问于:2014-03-13 11:29
< > 字节跳动旗下AI助手豆包
分享
最佳答案
0

其实问题就是。里面更新的时候,时间那列保存出了问题。。

今年过年前瘦8斤 | 初学一级 |园豆:94 | 2014-03-17 11:11
其他回答(4)
0

是不是字段类型不对?

wenjianzhang | 园豆:204 (菜鸟二级) | 2014-03-13 12:16

啥意思?可以说具体点嘛?谢谢哟。。。

支持(0) 反对(0) 今年过年前瘦8斤 | 园豆:94 (初学一级) | 2014-03-13 13:23
1

缺少dll?

Y2zz | 园豆:393 (菜鸟二级) | 2014-03-13 12:35

我引入了dll

支持(0) 反对(0) 今年过年前瘦8斤 | 园豆:94 (初学一级) | 2014-03-13 13:23
0

是不是要先后顺序?

雾静 | 园豆:561 (小虾三级) | 2014-03-13 13:42

什么先后?

支持(0) 反对(0) 今年过年前瘦8斤 | 园豆:94 (初学一级) | 2014-03-13 14:36
0

你T4模板生成的实体类中有对应的导航属性吗,你看下~~~

Dunn | 园豆:129 (初学一级) | 2014-03-14 10:30

你可以截图给我看吗?我不懂这个,呵呵。。。

支持(0) 反对(0) 今年过年前瘦8斤 | 园豆:94 (初学一级) | 2014-03-14 16:18

@魔女小溪: 例如我现在这个.tt下面的这些.cs文件,都是根据数据库生成的实体类,一个实体类,对应一个表,你进去看看,里面的属性,就是列名,看下最下面有没有导航的属性,所谓导航属性,就是那个属性前面的类型是其他实体类,这些属性就是外键了。你看看

支持(0) 反对(0) Dunn | 园豆:129 (初学一级) | 2014-03-14 16:30

@Dunn: 

#region Primitive Properties
    
        /// <summary>
        /// 推送名
        /// </summary>
        [DataMember]
        [DisplayName("推送名")]
        public virtual string Name
        {
            get;
            set;
        }
    
        /// <summary>
        /// 描述
        /// </summary>
        [DataMember]
        [DisplayName("描述")]
        public virtual string Remark
        {
            get;
            set;
        }

        /// <summary>
        /// 推送内容Id
        /// </summary>

        [DataMember]
        [DisplayName("内容Id")]
        public virtual int ContentId
        {
            get;
            set;
        }
    
        /// <summary>
        /// 间隔时间
        /// </summary>
        [DataMember]
        [DisplayName("间隔时间")]
        public virtual int IntervalTime
        {
            get;
            set;
        }
    
        /// <summary>
        /// 过期时间,intervalTime为0,按过期时间推送
        /// </summary>
        [DataMember]
        [DisplayName("过期时间")]
        public virtual System.DateTime ExpiredDateTime
        {
            get;
            set;
        }

        #endregion
View Code
支持(0) 反对(0) 今年过年前瘦8斤 | 园豆:94 (初学一级) | 2014-03-14 16:33

@Dunn: 

#region Primitive Properties
    
        /// <summary>
        /// 推送内容
        /// </summary>
        [DataMember]
        [DisplayName("推送内容")]
        public virtual string Content
        {
            get;
            set;
        }
    
        /// <summary>
        /// 内容过期时间
        /// </summary>
        [DataMember]
        [DisplayName("内容过期时间")]
        public virtual System.DateTime ExpiredDateTime
        {
            get;
            set;
        }

        #endregion
View Code

这是主表,刚刚那个是从表

支持(0) 反对(0) 今年过年前瘦8斤 | 园豆:94 (初学一级) | 2014-03-14 16:33

@Dunn: 直接用的是主表的Id

支持(0) 反对(0) 今年过年前瘦8斤 | 园豆:94 (初学一级) | 2014-03-14 16:34

@魔女小溪: 你看看.edmx那个文件,打开那个模型窗口,看下那些表是否有导航属性

支持(0) 反对(0) Dunn | 园豆:129 (初学一级) | 2014-03-14 16:37

@Dunn: 好,我看看

支持(0) 反对(0) 今年过年前瘦8斤 | 园豆:94 (初学一级) | 2014-03-14 16:37

@Dunn: 我可以问下.edmx那个文件在哪个地方吗?呜呜呜。。。

支持(0) 反对(0) 今年过年前瘦8斤 | 园豆:94 (初学一级) | 2014-03-14 16:39

@Dunn: 说实在话,这个程序我都还没摸清楚,里面的东西也是我首次接触,又没人带我。。所以,哎。。。。

支持(0) 反对(0) 今年过年前瘦8斤 | 园豆:94 (初学一级) | 2014-03-14 16:43

@魔女小溪: 额....你上面的那两个主表和从表的文件是你自己手写的吗?你把项目截图我看看吧,尽量舒展开

支持(0) 反对(0) Dunn | 园豆:129 (初学一级) | 2014-03-14 16:45

@Dunn: 上面那两张表,我不知道之前那些人是怎么弄出来的,我来了就已经存在了。。。所以,就留 了bug给我。。。

支持(0) 反对(0) 今年过年前瘦8斤 | 园豆:94 (初学一级) | 2014-03-14 16:48

@魔女小溪: 你看看Model那层里  有么有.edmx后缀的

支持(0) 反对(0) Dunn | 园豆:129 (初学一级) | 2014-03-14 16:49

@Dunn: 呵呵,找到了,直接查找后缀名那个文件就可以了,我先看看啊

支持(0) 反对(0) 今年过年前瘦8斤 | 园豆:94 (初学一级) | 2014-03-14 16:50

@Dunn: 

支持(0) 反对(0) 今年过年前瘦8斤 | 园豆:94 (初学一级) | 2014-03-14 16:52

@魔女小溪: 你这两个表没有导航属性,也就是两个表之间没有关系,也就是两个表不关联...

支持(0) 反对(0) Dunn | 园豆:129 (初学一级) | 2014-03-14 16:55

@Dunn: 这两张表的基表是:

支持(0) 反对(0) 今年过年前瘦8斤 | 园豆:94 (初学一级) | 2014-03-14 16:56

@Dunn: 你的意思是,导航就是主外键关系吧?我看了一下数据库,确实是没有这个关系的,但是,同时更新这两张表的时候,就是报错

支持(0) 反对(0) 今年过年前瘦8斤 | 园豆:94 (初学一级) | 2014-03-14 16:57

@魔女小溪: 没有导航属性,相当于无法直接通过EF进行跨表操作,你数据库的表有主外键的吗

支持(0) 反对(0) Dunn | 园豆:129 (初学一级) | 2014-03-14 16:57

@Dunn: 木有。。。但是,我添加可以呀!添加的时候,就是对两张表做操作,我是这么觉得的,因为添加所以在上下文不存在实体,但是,修改的时候,已经存在了,所以,才会报错,现在的问题就是,怎么能够让它去除上下文中的实体。。。我刚刚接触EF,不能熟练操作。。。

支持(0) 反对(0) 今年过年前瘦8斤 | 园豆:94 (初学一级) | 2014-03-14 16:59

@魔女小溪: 你修改的时候,可以获取到实体哦,你要修改他的Status,然后改完再savechanges(),试下,我也接触ef不久

支持(0) 反对(0) Dunn | 园豆:129 (初学一级) | 2014-03-14 17:07

@Dunn: 哦。

支持(0) 反对(0) 今年过年前瘦8斤 | 园豆:94 (初学一级) | 2014-03-14 17:10

@Dunn: 谢谢你 呀!哎。。。虽然还没解决,我会努力找原因的。。。

支持(0) 反对(0) 今年过年前瘦8斤 | 园豆:94 (初学一级) | 2014-03-14 17:14

@魔女小溪: 额...加油啊

支持(0) 反对(0) Dunn | 园豆:129 (初学一级) | 2014-03-14 21:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册
Top