我的理解是DateTime不受支持,我必须始终使用DateTimeOffset.精细.
但在我在DateTime中存储sql日期数据类型之前,现在看来我得到了这个错误:
Member MapPing specifIEd is not valID. The type 'Edm.DateTimeOffset[Nullable=False,DefaultValue=,Precision=]' of member 'CreatedDate' in type 'MyEntity' is not compatible with 'sqlServer.date[Nullable=False,Precision=0]'
为此做了什么工作?我需要能够专门存储数据库中的日期(时间和地点并不重要).如果我能得到Edm.Date以及返回的数据类型会很棒,但我之前没有.
谢谢.
编辑:示例类
之前:
public class Ticket{ [Key,DatabaseGenerated(DatabaseGeneratedOption.IDentity)] public int ID { get; set; } [required,MaxLength(50)] public string Reference { get; set; } [Column(Typename = "date")] public DateTime LoggedDate { get; set; }}
后:
public class Ticket{ [Key,MaxLength(50)] public string Reference { get; set; } [Column(Typename = "date")] public DateTimeOffset LoggedDate { get; set; }}
这在EF中无效.
解决方法 一种选择是在实体中定义新属性.说标题映射到EF:public partial class Title{ public int ID { get; set; } public string name { get; set; } public Nullable<System.DateTime> CreatedOn { get; set; }}
然后添加DateTimeOffset的新属性:
public partial class Title{ [NotMapped] public DateTimeOffset? EdmCreatedOn { // Assume the CreateOn property stores UTC time. get { return CreatedOn.HasValue ? new DateTimeOffset(CreatedOn.Value,TimeSpan.FromHours(0)) : (DateTimeOffset?)null; } set { CreatedOn = value.HasValue ? value.Value.UtcdateTime : (DateTime?)null; } }}
并且生成OData模型的代码如下所示:
public static IEdmModel GetModel() { ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); EntityTypeConfiguration<Title> TitleType= builder.EntityType<Title>(); TitleType.Ignore(t => t.CreatedOn); TitleType.Property(t => t.EdmCreatedOn).name = "CreatedOn"; builder.EntitySet<Title>("Titles"); builder.namespace = typeof(Title).namespace; return builder.GetEdmModel(); }}
控制器看起来像:
public class TitlesController : ODataController{ CustomerManagementSystemEntitIEs entitIEs = new CustomerManagementSystemEntitIEs(); [Enablequery(PageSize = 10,MaxExpansionDepth = 5)] public IhttpActionResult Get() { Iqueryable<Title> Titles = entitIEs.Titles; return Ok(Titles); } public IhttpActionResult Post(Title Title) { entitIEs.Titles.Add(Title); return Created(Title); }}总结
以上是内存溢出为你收集整理的entity-framework – 使用OData v4,EF6和Web API v2.2处理日期全部内容,希望文章能够帮你解决entity-framework – 使用OData v4,EF6和Web API v2.2处理日期所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)