none
Entiyframework 对象继承的问题. RRS feed

  • 问题

  • 你好,我有个WEBAPI项目,通过database first 生成了一个类. Message

    public partial class Message 
    {
        public MsgId {get;set;}
    }

    我想直接用这个类作为WEBAPI的对象,但是需要为属性设置一些条件约束,但是DataFirst重新生成时会覆盖,于是我重新创建了一个类,继承了这个类,然后将这个类传递到EF中使用.

    public class MessageModel:Message
    {
    }
    

    这是WEBAPI里的一个Controller的一个Action,但是出现了异常.
    [Route()]
            [HttpPost]
            public HttpResponseMessage SaveMsg(MessageModel msg)
            {
                if (ModelState.IsValid)
                {
                    try
                    {
                         
                        DBEntities dbEntites = new DBEntities();
                        dbEntites.Messages.Add(msg);
                         
                        return this.Request.CreateResponse(new ApiResult { message = string.Empty });
                    }
                    catch (Exception ex)
                    {
                        return this.Request.CreateResponse(new ApiResult { message = ex.Message });
                    }
                }
                else
     
                { return this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); }
     
     
            }


    找不到EntityType:MessageModel的映射和元数据信息.


    ...

    2018年4月25日 6:45

全部回复

  • 您可以将EF生成的类,与您加的类区分开

    a.cs

    这里由生成的

    a.design.cs

    这里写您的类属性与定义


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2018年4月26日 0:54
  • 我是这么想的,我数据库有很多字段,EF能够自动生成数据库表对应的类,如果我自己的类照着EF生成的类重新写一个字段一一对应的类,不如直接继承EF生成的类,这样就省一些事情,但是我继承的类对象却不能直接传递到EF中使用.

    ...

    2018年4月26日 2:05
  • 你好,

    可以使用partial class 来做, 在项目下面新建一个class 文件。随便取一个文件名,然后把里面的内容改成下面这样,EF会把2个 partial class 合成一个去Map的。

    public partial class Message 
    {
        public OtherProperty {get;set;}
    }

    Best regards,

    Zhanglong


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年4月26日 8:53
    版主