entity-framework - Breeze.js 不支持具有 TimeSpan 属性的 EF 实体?

标签 entity-framework entity-framework-4 breeze

将 TimeSpan 属性添加到 DocCode 项目中的 Employee 实体后,我收到 NotSupportedException。所以我知道它不受支持,但是...是否有计划进行转换或有办法克服这个问题。我们在实体中广泛使用 TimeSpan,是否有办法或计划支持 TimeSpan?

  1. 添加了持续时间属性
public class Employee
{
    ...
    public DateTime? HireDate { get; set; }

    public TimeSpan? Duration { get; set; }

    [MaxLength(60)]
    public string Address { get; set; }
    ...
}

当在运行单元测试的 NorthwindController 上调用 MetaData() 方法时,它会失败:

System.NotSupportedException was unhandled by user code
HResult=-2146233067
Message=There is no store type corresponding to the EDM type 'Edm.Time(Nullable=True)' of primitive type 'Time'.
Source=System.Data.SqlServerCe.Entity
StackTrace:
   at System.Data.SqlServerCe.SqlCeProviderManifest.GetStoreType(TypeUsage edmType)
   at System.Data.Entity.ModelConfiguration.Edm.Services.StructuralTypeMappingGenerator.MapTableColumn(EdmProperty property, DbTableColumnMetadata tableColumnMetadata, Boolean isInstancePropertyOnDerivedType, Boolean isKeyProperty)
   at System.Data.Entity.ModelConfiguration.Edm.Services.PropertyMappingGenerator.Generate(EdmEntityType entityType, IEnumerable`1 properties, DbEntitySetMapping entitySetMapping, DbEntityTypeMappingFragment entityTypeMappingFragment, IList`1 propertyPath, Boolean createNewColumn)
   at System.Data.Entity.ModelConfiguration.Edm.Services.EntityTypeMappingGenerator.Generate(EdmEntityType entityType, DbDatabaseMapping databaseMapping)
   at System.Data.Entity.ModelConfiguration.Edm.Services.DatabaseMappingGenerator.GenerateEntityTypes(EdmModel model, DbDatabaseMapping databaseMapping)
   at System.Data.Entity.ModelConfiguration.Edm.Services.DatabaseMappingGenerator.Generate(EdmModel model)
   at System.Data.Entity.ModelConfiguration.Edm.EdmModelExtensions.GenerateDatabaseMapping(EdmModel model, DbProviderManifest providerManifest)
   at System.Data.Entity.DbModelBuilder.Build(DbProviderManifest providerManifest, DbProviderInfo providerInfo)
   at System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection)
   at System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext)
   at System.Data.Entity.Internal.RetryLazy`2.GetValue(TInput input)
   at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
   at System.Data.Entity.Internal.InternalContext.Initialize()
   at System.Data.Entity.Internal.InternalContext.ForceOSpaceLoadingForKnownEntityTypes()
   at System.Data.Entity.DbContext.System.Data.Entity.Infrastructure.IObjectContextAdapter.get_ObjectContext()
   at Breeze.WebApi.EFContextProvider`1.GetCsdlFromObjectContext(Object context)
   at Breeze.WebApi.EFContextProvider`1.GetCsdlFromDbContext(Object context)
   at Breeze.WebApi.EFContextProvider`1.BuildJsonMetadata()
   at Breeze.WebApi.ContextProvider.Metadata()
   at DocCode.Controllers.NorthwindController.Metadata() in c:\Users\anwalker\Downloads\breeze-runtime-plus-0.78.2\Samples\DocCode\DocCode\Controllers\NorthwindController.cs:line 20
   at lambda_method(Closure , Object , Object[] )
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass13.<GetExecutor>b__c(Object instance, Object[] methodParameters)
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments)
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.<>c__DisplayClass5.<ExecuteAsync>b__4()
   at System.Threading.Tasks.TaskHelpers.RunSynchronously[TResult](Func`1 func, CancellationToken cancellationToken)
InnerException: 

最佳答案

在版本 0.84.1 中添加了 TimeSpan 支持。

TimeSpan 在 Breeze 客户端上表示为 ISO 8601“持续时间”字符串。请参阅http://en.wikipedia.org/wiki/ISO_8601

完整的查询支持包括过滤和返回 TimeSpan/Duration 属性的能力。即

var query = EntityQuery.from("Contracts").where("TimeElapsed", ">", "PT4H30M");

关于entity-framework - Breeze.js 不支持具有 TimeSpan 属性的 EF 实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13982046/

相关文章:

javascript - Breeze.js 通过选择展开

java - 在实体类中定义一个不是列的变量

asp.net-mvc - 延迟加载忽略显式加载

c# - 处理 EF 中循环引用的干净方法?

javascript - angularjs和requirejs中 "Q"和 "q"之间的区别

breeze - 来自已加载实体的 Breeze 投影查询

c# - 移至CollectionViewSource中的特定项目?

c# - 事务(进程 ID 209)在锁上死锁 |与另一个进程通信缓冲区资源并已被选为死锁受害者

entity-framework-4 - 允许 Entity Framework 4.5 将 datetime2 与 SQL Server CE4 一起使用

c# - 使用 Entity Framework 4 执行自定义 sql