我有一个 C# 应用程序,它接收 JSON 数据并将模型写回 Universe。在许多模型中,我需要将 DATE 和 TIME 字段分开,并在创建模型时将它们单独写回。
NET Framework V4.6.1、U2.Data V2.2.2 NuGet 包、U2NDK V2.2.2、Universe V11.2.5
我使用 RocketU2 在 Universe 中创建了模型:
@ID TYPE LOC CONV ... DATA TYPE
Id D 0 CHAR(30)
AdjustmentDate D 1 D4- DATE
AdjustmentTime D 2 MTS TIME
我的第一反应是在控制器中写这个:
AdjustmentTime = DateTime.Now.TimeOfDay;
这在 C# 应用程序模型中:
public TimeSpan AdjustmentTime { get; set; }
这导致了错误:“没有对应于原始类型'Time'的EDM类型'Edm.Time'的存储类型。”
有许多关于如何将时间单独发布到数据库的问题。所以我尝试了这些,结果如下:
产品调整控制器:
[Route("")]
[HttpPost]
public HttpResponseMessage PostProductAdjustment([FromBody] ProductAdjustmentCreate productAdjustmentCreate)
{
ResponseCollectionMember _response = new ResponseCollectionMember();
try
{
var id = productAdjustmentCreate.ProductId + "*" + productAdjustmentCreate.AdjustmentDate.ToString() + "*" + productAdjustmentCreate.AdjustmentTime.ToString();
var productAdjustmentEntity = new ProductAdjustmentEntity()
{
Id = id,
AdjustmentDate = DateTime.Now.Date,
AdjustmentTime = DateTime.Now.TimeOfDay.Ticks,
};
_context.ProductAdjustments.Add(productAdjustmentEntity);
}
ProductAdjustmentEntity 模型:
public class ProductAdjustmentEntity : FileBase<string>
{
public string ProductId { get; set; }
public DateTime? AdjustmentDate { get; set; }
public long AdjustmentTime { get; set; }
[NotMapped]
public TimeSpan Time
{
get { return TimeSpan.FromTicks(AdjustmentTime); }
set { AdjustmentTime = value.Ticks; }
}
}
ProductAdjustment创建模型:
public class ProductAdjustmentCreate
{
[Required]
public string ProductId { get; set; }
public DateTime? AdjustmentDate { get; set; }
public long AdjustmentTime { get; set; }
[NotMapped]
public TimeSpan Time
{
get { return TimeSpan.FromTicks(AdjustmentTime); }
set { AdjustmentTime = value.Ticks; }
}
}
对于不同的类型,我得到相同的不受支持的原始类型错误:“没有与原始类型‘Int64’的 EDM 类型‘Edm.Int64’相对应的存储类型。”
我深入研究了 U2.Data 包,发现 U2.Data.ClientTypes.Int64 和 Time DO 存在。我尝试的最后一件事是创建一种方法,将我的模型创建值转换为 U2 接受的值:
public static U2Int64 ConvertToU2Int64(long time)
{
U2Int64 u2Time = time;
return u2Time;
}
但这所做的只是返回 null。
我只是想让它工作,这样我就可以测试将模型发布到 Universe。
我对完成这个过程的问题:有没有一种简单的方法可以做到这一点?我将如何获得要识别的原始类型?我将如何编写一种方法来转换我可以在整个应用程序中使用的它们?