首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >嵌套对象中的EF CodeFirst DateTime

嵌套对象中的EF CodeFirst DateTime
EN

Stack Overflow用户
提问于 2018-02-27 08:40:27
回答 1查看 67关注 0票数 1

在我们的EF模型中,我们有很多To/From (DateTime)成员。我昨天尝试了一个新的概念,我把这些东西放在一个新的类(DateTimePeriod)中,让生活变得更容易。

示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public partial class SomeEfModel
{
    [Key]
    public int Id { get; set; }
    public DateTimePeriod Time { get; set; }
}
public class DateTimePeriod
{
    public DateTime From { get; set; }
    public DateTime To { get; set; }
}

这和预期的一样,但我意识到时间有时会是空的。由于EF创建的From/To在数据库中不可为空,因此时间不能为空。

我是否仍然可以在代码中拥有不可为空的From/To,但在数据库中使它们可为空?如果它们为null,则从DB获取时Time-property应为null。

哦,Entity Framework 6.0 btw。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-02-27 12:48:13

是的你可以。您应该使用可以为空的属性定义您的类,然后将数据映射到业务层中以使用不可为空的值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public partial class SomeEfModel
{
    [Key]
    public int Id { get; set; }
    public DateTimePeriod Time { get; set; }
}
public class DateTimePeriod
{
    public DateTime? From { get; set; }
    public DateTime? To { get; set; }
}

在此之后,您应该创建一个单独的类来映射DateTimePeriod的一些默认值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class DateTimePeriodDto
{
    public DateTime From {get; set; }
    public DateTime To {get; set; }

    public DateTimePeriodDto(DateTimePeriod dataObject)
    {
        From = dataObject.From ?? //put a default value
        To = dataObject.To ?? //put a default value
    }
}

在最后,你应该有类似这样的东西:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public partial class SomeEfModelDto
{
    public int Id { get; set; }
    public DateTimePeriodDto Time { get; set; }
    public SomeEfModelDto(SomeEfModel model)
    {
        Id = model.Id;
        Time = new DateTimePeriodDto(model.DateTimePeriod);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49004409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文