EF代码首先列出而不创建表

我正在用一个实体创建一个非常简单的EF4代码第一个项目。

public class Activity { public Guid Id { get; set; } public string Description { get; set; } public List DateDone { get; set; }  public Activity() { if(DateDone==null) DateDone = new List(); } } 

我重建我的项目,然后运行MVC3应用程序并生成数据库(确认,我已添加和删除列),我的数据是种子(当我修改种子数据时它在屏幕上更改)

我能够:

 var activity = db.Activities.Find(id); activity.DateDone = DateTime.Now; db.SaveChanges(); 

但是数据没有保存。 我检查了数据库,因为只有一个表(Activity),它有所有相应的字段。 我希望它应该有第二个表,ActivityDateDone有两个字段,ActivityGuid和DateDone。

我在做这项工作时失踪了什么?

entity framework不支持基本类型的集合。

您需要定义一个单独的类来保存DateTimes。

DateTime不是实体。 如果希望代码首先为您创建数据结构,则需要创建模型类。 我假设你的活动表有一个DateDone列?

虽然entity framework本身不支持此function,但您可以使其工作得非常好。

请参阅此答案以获取其他代码(PersistableScalarCollection)和原创想法: https : //stackoverflow.com/a/11990836/1742393

 ///  /// ALlows persisting of a simple DateTime collection. ///  [ComplexType] public class PersistableDateTimeCollection : PersistableScalarCollection { protected override DateTime ConvertSingleValueToRuntime(string rawValue) { return DateTime.Parse(rawValue); } protected override string ConvertSingleValueToPersistable(DateTime value) { return value.ToShortDateString(); } }