您好我DateTime
格式SQL server
格式没问题。
我有一个与SQL Server 2012
相关联的应用。
我需要在App中使用EU Dateformat。 SQL Server以EU格式保存DateTime
证明:
但是,当我允许用户以欧盟格式输入日期时EntityFramework
会抛出Model not valid
我认为C#默认DateTimeformat是US
如何修改此代码以允许用户输入EU格式日期并将其传递给DB而不会出现任何问题:
我的模特:
namespace magazyn.Models
{
using System;
using System.Collections.Generic;
public partial class DeviceInstance
{
public int Id { get; set; }
public int DeviceId { get; set; }
public string SerialNo { get; set; }
public System.DateTime CreationDate { get; set; }
public virtual Device Device { get; set; }
public virtual DeviceUsage DeviceUsage { get; set; }
}
}
答案 0 :(得分:4)
SQL Server以EU格式保存DateTime
不,它没有。 (至少,如果它在数据库中的适当列类型中,则不会。)它以更紧凑的二进制格式保存它 - 至少我假设如此。这是一个实现细节。从根本上说,重点是它是一个日期/时间值。您应始终根据DateTime
值(或DateTimeOffset
或其他)与数据库进行通信,而不是字符串。这样,您就不会参与转换。您在SQL Explorer中看到的内容(或者您用来查询它的任何内容)只是数据库中内容的字符串表示。这与数据库中的值不同。
以同样的方式,您可以要求数据库显示十进制或十六进制数字 - 这不会更改基本数值。
您需要在应用程序中对用户输入的数据进行适当的转换,然后再次将数据库中的任何数据显示给用户,但不需要使用字符串表示超出“用户边界”。
您应该尝试使绝大多数代码使用非基于字符串的表示。尽可能早地将输入数据转换为“自然”表示,并尽可能晚地将输出数据转换为特定于文化的字符串表示。