相关疑难解决方法(0)

实体框架代码优先和原始类型的集合

当创建包含基本类型集合并由EF Code First持久化的POCO类时,到目前为止我发现的最好建议是创建一个具有ID加上基本类型的新类:

具有简单数组的实体框架和模型

如果我现在有需要类型的属性几类ObservableCollection<string>,并取代它们ObservableCollection<EntityString>(这里EntityString是一个ID和一个字符串属性自定义类型),我结束了一个表EntityString有多个外键列,一个类型的每个属性ObservableCollection<EntityString>跨越所有具有此类属性的具体类型.

这导致表中大多数为空的外键列膨胀EntityString.

一种方法是创建子类,EntityString并为这些子类使用Table per Type模型.但是,这需要对对象模型进行笨拙的更改,以适应实体框架.

问题:

  • 封装类型是最好的管理方式Collection<PrimitiveType>吗?
  • 如果是这样,那么允许多个(多个)外键列与每种类型创建自定义表(以笨拙的模型为代价)的专业和概念是什么?

entity-framework ef-code-first entity-framework-4.1

10
推荐指数
1
解决办法
4241
查看次数

在C#中包装ObservableCollection <T>

我有理由ObservableCollection<T>另一种类型的实例包装起来.

我正在ICollection<T>以我的新类型实现.这很简单.我也在实施INotifyCollectionChanged,这意味着实施

public event NotifyCollectionChangedEventHandler CollectionChanged;
Run Code Online (Sandbox Code Playgroud)

我能想到实现这个的最佳途径是在我的实现中添加额外的代码ICollection<T>,如下所示:

public void Add(T item)
{
    Collection.Add(item);
    if (CollectionChanged != null) CollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, item));
}
Run Code Online (Sandbox Code Playgroud)

(集合是ObservableCollection<T>我正在包装的实例).

有没有办法利用该INotifyCollectionChanged集合提供的实现,而不是自己重新实现它?

c# observablecollection containment

2
推荐指数
1
解决办法
969
查看次数