【问题标题】:Metadata updating models from database first in Entity Framework does not work在实体框架中首先从数据库更新模型的元数据不起作用
【发布时间】:2018-03-09 16:56:30
【问题描述】:

我想为模型添加更多验证消息注释(这里的所有模型都是由数据库首先生成的),所以我确实在此链接https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/database-first-development/enhancing-data-validation 的帮助下使用了元数据。未更新模型,但构建失败并显示警告:

错误 6046:无法生成存储函数“fn_diagramobjects”的函数导入返回类型。

错误 CS1061“Account”不包含“ConfirmPassword”的定义,并且找不到接受“Account”类型的第一个参数的扩展方法“ConfirmPassword”(您是否缺少 using 指令或程序集引用?)项目-asp-mvc D:.NET demo\Project\project-asp-mvc\Controllers\UserController.cs 85 活动

这是我从数据库生成的模型:

using System;
using System.Collections.Generic;

public partial class Account
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public Account()
    {
        this.Orders = new HashSet<Order>();
    }

    public string username { get; set; }
    public string password { get; set; }
    public Nullable<int> role_id { get; set; }

    public virtual Role Role { get; set; }
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<Order> Orders { get; set; }
}

Metadata.cs

using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;

namespace project_asp_mvc.Models
{
    public class AccountMetadata
    {
        [Required]
        [StringLength(50, ErrorMessage = "Username con not be longer than 50")]
        [EmailAddress]
        public string username { get; set; }

        [Required]
        [DataType(DataType.Password)]
        public string password { get; set; }

        [Required]
        [NotMapped]
        [DataType(DataType.Password)]
        [Compare("Password", ErrorMessage = "Please confirm your password again")]
        public string ConfirmPassword { get; set; }
    }
}

PartialClasses.cs

 using System;
 using System.Collections.Generic;
 using System.ComponentModel.DataAnnotations;
 using System.Linq;
 using System.Web;

 namespace project_asp_mvc.Models
 {
    [MetadataType(typeof(AccountMetadata))]
    public partial class Account
    {
    }
  }

【问题讨论】:

    标签: c# asp.net asp.net-mvc entity-framework asp.net-mvc-4


    【解决方案1】:

    这些代码行来自 AccountMetadata 类的什么地方。

    [Required]
    [NotMapped]
    [DataType(DataType.Password)]
    [Compare("Password", ErrorMessage = "Please confirm your password again")]
    public string ConfirmPassword { get; set; }
    

    您似乎已为未在帐户类中退出的属性添加注释。 我建议您删除这些行并重试。

    【讨论】:

    • 如果我删除它,那么我如何确认2个密码?
    • 一次奇迹。现在它甚至没有建立。让我们让它运行以确保没有更多问题,然后从那里开始。
    • 构建成功,但仍然存在警告,没有更新:严重代码描述项目文件行抑制状态警告错误6046:无法生成存储函数'fn_diagramobjects'的函数导入返回类型。 store函数会被忽略,不会生成函数import
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 2011-04-26
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多