C# 私有财产地图

C# 私有财产地图,c#,entity-framework-core,asp.net5,C#,Entity Framework Core,Asp.net5,我有一个带有Entity Framework 7的Asp.Net项目,还有一个带有附件列表的电子邮件类 我不想让任何人把一个项目添加到我的列表中,我有他们 私有列表资源{get;set;} 公共IEnumerable附件{get;set;} 现在,我想将与属性资源的关系映射到数据库,而不是映射到附件 实体框架7出现了一个例外 如何做到这一点。将此模型分为两种不同的模型,一种是映射到数据库的内部模型,另一种是可供用户使用的模型。 这也是在层之间传递数据的正确方式 希望有帮助 将此模型分为两种不

我有一个带有Entity Framework 7的Asp.Net项目,还有一个带有附件列表的电子邮件类

我不想让任何人把一个项目添加到我的列表中,我有他们


私有列表资源{get;set;}
公共IEnumerable附件{get;set;}

现在,我想将与属性资源的关系映射到数据库,而不是映射到附件

实体框架7出现了一个例外


如何做到这一点。

将此模型分为两种不同的模型,一种是映射到数据库的内部模型,另一种是可供用户使用的模型。 这也是在层之间传递数据的正确方式


希望有帮助

将此模型分为两种不同的模型,一种是映射到数据库的内部模型,另一种是可供用户使用的模型。 这也是在层之间传递数据的正确方式

希望有帮助

我同意Itay

也许这个代码示例可以帮助您

创建映射到db表的实体

public class EmailState
{
    public int Id { get; private set; }

    public List<AttachmentState> Resources { get; set; }

    public static Email ToEmail(EmailState state)
    {
        return new Email(state);
    }
}

public class AttachmentState
{
    public static Attachment ToAttachment(AttachmentState state)
    {
        return new Attachment(state);
    }

    public Attachment ToAttachment()
    {
        return new Attachment(this);
    }
}
像这样使用它

using (var context = new EmailDbContext())
{
    IEmailRepository repository = new EmailRepository(context);

    var email = new Email();

    repository.Add(email);

    context.SaveChanges();

    var emailFoundById = repository.GetById(email.Id);
}
我同意伊泰的观点

也许这个代码示例可以帮助您

创建映射到db表的实体

public class EmailState
{
    public int Id { get; private set; }

    public List<AttachmentState> Resources { get; set; }

    public static Email ToEmail(EmailState state)
    {
        return new Email(state);
    }
}

public class AttachmentState
{
    public static Attachment ToAttachment(AttachmentState state)
    {
        return new Attachment(state);
    }

    public Attachment ToAttachment()
    {
        return new Attachment(this);
    }
}
像这样使用它

using (var context = new EmailDbContext())
{
    IEmailRepository repository = new EmailRepository(context);

    var email = new Email();

    repository.Add(email);

    context.SaveChanges();

    var emailFoundById = repository.GetById(email.Id);
}

您能告诉我们EF抛出了什么异常吗?另外,为什么要将EF映射到
资源
属性而不是
附件
属性?您能告诉我们EF抛出了什么异常吗?还有,为什么要将EF映射到
资源
属性而不是
附件
属性?
using (var context = new EmailDbContext())
{
    IEmailRepository repository = new EmailRepository(context);

    var email = new Email();

    repository.Add(email);

    context.SaveChanges();

    var emailFoundById = repository.GetById(email.Id);
}