मुझे यह काम EF6 में अच्छी तरह से मिला।
मैंने अपने डेटा प्रकारों को निर्दिष्ट करने के लिए एक सम्मेलन बनाया। यह कन्वेंशन डेटाबेस निर्माण में डिफ़ॉल्ट डेटटाइम डेटा प्रकार को डेटाइम से डेटाटाइम 2 में बदलता है। यह तब किसी भी गुण के लिए एक अधिक विशिष्ट नियम लागू करता है जिसे मैंने DataType (DataType.Date) विशेषता के साथ सजाया है।
public class DateConvention : Convention
{
public DateConvention()
{
this.Properties<DateTime>()
.Configure(c => c.HasColumnType("datetime2").HasPrecision(3));
this.Properties<DateTime>()
.Where(x => x.GetCustomAttributes(false).OfType<DataTypeAttribute>()
.Any(a => a.DataType == DataType.Date))
.Configure(c => c.HasColumnType("date"));
}
}
फिर अपने संदर्भ में तब सम्मेलन को पंजीकृत करें:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Conventions.Add(new DateConvention());
}
किसी भी तारीख गुणों की विशेषता जोड़ें जो आप केवल तारीख की इच्छा रखते हैं:
public class Participant : EntityBase
{
public int ID { get; set; }
[Required]
[Display(Name = "Given Name")]
public string GivenName { get; set; }
[Required]
[Display(Name = "Surname")]
public string Surname { get; set; }
[DataType(DataType.Date)]
[Display(Name = "Date of Birth")]
public DateTime DateOfBirth { get; set; }
}
Sequence contains no matching element
, यदि आप एक DB की ओर इशारा कर रहे हैं जो तारीख का समर्थन नहीं करता है। SQL Server 2014 करता है।