将类另存为另一个分类

时间:2015-10-15 14:52:46

标签: c# entity-framework-6 visual-studio-2015

我不知道这是否是正确的方法。这是我从实体6.xx生成的类:

namespace bd.inputdata.edmx
{
    using model;
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;

    [MetadataType(typeof(Usuario))]
    public partial class input_usuario
    {
        public int id { get; set; }
        public string nome { get; set; }
        public string usuario { get; set; }
        public string senha { get; set; }
        public string email { get; set; }
        public int id_grupo { get; set; }
        public System.DateTime data_criacao { get; set; }
        public System.DateTime data_alteracao { get; set; }
        public Nullable<int> tipo { get; set; }
        public byte ativo { get; set; }
    }
}

我已经为数据编辑创建了另一个类,如here所示。

using System;
using bd.inputdata.Base;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace bd.inputdata.model
{
    [Table("usuario")]
    public class Usuario : IRaizDeAgregacao
    {
        [Key]
        public int id { get; set; }

        [Required]
        [StringLength(150)]
        public string nome { get; set; }

        [Required]
        [StringLength(100)]
        public string usuario { get; set; }

        [Required]
        [StringLength(100)]
        public string senha { get; set; }

        [Required]
        [StringLength(50)]
        public string email { get; set; }

        [Required]
        public int id_grupo { get; set; }

        [Timestamp]
        public DateTime data_criacao { get; set; }

        [Timestamp]
        public DateTime data_alteracao { get; set; }

        public int? tipo { get; set; }
        public byte ativo { get; set; }


    }
}

当我尝试在上下文中保存这个新类Usuario时,它说我不能:

The wrong type error

那么纠正这个问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

实体框架正在根据您的数据库为您生成类。为什么不将注释添加到生成的类中?如果你想使用自己的POCO,你需要先编码。根据注释的内容(例如前端),使用DTO,即用DTO编写的类添加到类名的末尾。然后,您可以在将其保存到数据库之前将其映射回生成的类。

答案 1 :(得分:0)

MeteData类并不是可以替换实体类型的DTO - 它们是为了让您有一个位置来向实体模型添加属性而无需更改设计器生成的代码。您应该在应用中使用实体类(而不是MetaData类),或者在应用中使用不同的模型类型,然后将其映射回实体模型。