在我们的EF模型中,我们有很多To/From (DateTime)成员。我昨天尝试了一个新的概念,我把这些东西放在一个新的类(DateTimePeriod)中,让生活变得更容易。
示例
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。
提前谢谢。
发布于 2018-02-27 12:48:13
是的你可以。您应该使用可以为空的属性定义您的类,然后将数据映射到业务层中以使用不可为空的值。
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的一些默认值:
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
}
}
在最后,你应该有类似这样的东西:
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);
}
}
https://stackoverflow.com/questions/49004409
复制相似问题