• 关于MVC EntityType has no key defined的问题


    在测试MVC时发现一个奇怪的问题,在Model中定义数据类时,如

    public class UserInfo
     {
        
         public int UserId{get;set;} 
    
         public string Name { get;set; }
         public string PassWord{get;set;}
    
         //public virtual ICollection<TalkInfo> TalkInfo { get;set; }
     }
    


    使用该类生成Controler类时发生异常

    Mvc1mvc2

    错误提示:EntityType has no key defined.Define the key for this EntityType.(网上资料不是很多,难道我哪里写错了?继续研究..)

    从提示看,没有创建类数据的Key值,OK,我们在类中定义一个KEY,

    [Key]               ----添加Key属性时引用了using System.ComponentModel.DataAnnotations命名空间
    public string Name { get;set; }

    重新生成Controler类,没有错误提示,生成正常,View中的Index、Creat等页面也自动生成。但是这时候出现了下面问题:

    在生成的View的Create等页面中,没有了Name的创建,也就是说Controler生成时自动忽略了添加了Key属性的Name,而此时无法创建Name,作为一个Key,Name为空肯定是有问题的,但是在Create页面手动添加Name的label,运行网站时此时会抛出新的异常,

    Validation failed for one or more entities. See 'EntityValidationErrors' property for more details

    db.SaveChanges();
    应该是Name的Key问题,但是具体要改正什么地方无处下手.
    在View中加入:
      <div class="editor-label">
                @Html.LabelFor(model => model.Name)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Name)
                @Html.ValidationMessageFor(model => model.Name)
            </div>
    此时可以传入Name值,只要不为空,即可正常插入。但是Talkinfo还是有点小问题。总之上述问题至此解决,接着研究TalkInfo:)
    分享到: 更多
  • 相关阅读:
    如何找bug
    信号量
    带组装的测试
    Oracle的一些操作
    NPOI的操作
    初次认识 C# win32 api
    C# 通过Selecnuim WebDriver操作非IE浏览器
    DevExpress.chartControt画趋势图
    DevExpress.chartContro控件保存图片和打印图片
    SqlServer基础复习
  • 原文地址:https://www.cnblogs.com/haisa/p/2131746.html
Copyright © 2020-2023  润新知