首先在实体框架中从数据库更新模型的元数据不起作用

时间:2017-09-28 04:09:05

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

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

  

错误6046:无法生成商店功能的函数导入返回类型' fn_diagramobjects'。

     

错误CS1061'帐户'不包含' ConfirmPassword'的定义并且没有延期方法' ConfirmPassword'接受第一个类型' Account'可以找到(你是否缺少using指令或程序集引用?)project-asp-mvc D:.NET demo \ Project \ project-asp-mvc \ Controllers \ UserController.cs 85 Active

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

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

Metadata.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
    {
    }
  }

PartialClasses.cs

 public class PacketService {

    private static PacketService instance; 

        private PacketService(){}
        public static PacketService newInstance(){

            if(instance == null) {
                instance = new PacketService();
            }
            return instance; 
        }

        public <T extends Packet> T handlePacket(Class<T> clazz, JSONObject data){
            return (T) clazz.newInstance().fromJson(data);
        }

      }

1 个答案:

答案 0 :(得分:0)

这些代码行来自AccountMetadata类。

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

您似乎已将注释添加到不会在帐户类中退出的媒体资源中。 我建议你删除这些行,然后再试一次。