2010-11-12 2 views
3

Я очень новичок в WPF и EF, и я пытаюсь отобразить некоторые данные из таблицы в datagrid. У меня есть модель сущности, вытащенная из существующей базы данных, и, как кажется, работают простые операции (подсчет строк, используя «первый»).Entity Framework NullReferenceException вызывает ToList?

Я бегу против Firebird 2.5.0 с использованием провайдера 2.0.5 DDEX и 2.5.2 ADO NETProvider.

Когда я пытаюсь получить данные в сетке или просто в список, я получаю исключение с нулевой ссылкой.

Возможно, я просто не понимаю, как использовать структуру сущности, но примеры, которые я вижу в сети, делают ее очень простой.

public partial class Page1 : Page 
{ 
    Entities context; 

    public Page1() 
    { 
     context = new Entities(); 

     InitializeComponent(); 

     // This works to get a row into the grid 
     var arep = context.SALESREPs.First(); 
     var alist = new List<SALESREP>(); 
     alist.Add(arep); 
     gridUserList.ItemsSource = alist; 

     // These both fail with null ref exception 
     var allreps = context.SALESREPs.ToList(); 
     gridUserList.ItemsSource = context.SALESREPs; 
    } 
} 

Вот деталь исключение:

System.NullReferenceException was unhandled by user code 
Message=Object reference not set to an instance of an object. 
Source=System.Data.Entity 
StackTrace: 
    at System.Data.EntityKey.AddHashValue(Int32 hashCode, Object keyValue) 
    at System.Data.EntityKey.GetHashCode() 
    at System.Collections.Generic.GenericEqualityComparer`1.GetHashCode(T obj) 
    at System.Collections.Generic.Dictionary`2.FindEntry(TKey key) 
    at System.Collections.Generic.Dictionary`2.TryGetValue(TKey key, TValue& value) 
    at System.Data.Objects.ObjectStateManager.TryGetEntityEntry(EntityKey key, EntityEntry& entry) 
    at System.Data.Common.Internal.Materialization.Shaper.HandleEntityAppendOnly[TEntity](Func`2 constructEntityDelegate, EntityKey entityKey, EntitySet entitySet) 
    at lambda_method(Closure , Shaper) 
    at System.Data.Common.Internal.Materialization.Coordinator`1.ReadNextElement(Shaper shaper) 
    at System.Data.Common.Internal.Materialization.Shaper`1.SimpleEnumerator.MoveNext() 
    at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) 
    at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) 
    at PSUserMaintenanceWebUI.Page1..ctor() in C:\Documents and Settings\d...\my documents\visual studio 2010\Projects\UserMaintenance\UserMaintenanceWebUI\Page1.xaml.cs:line 36 
    at System.Xaml.Schema.XamlTypeInvoker.DefaultCtorXamlActivator.InvokeDelegate(Action`1 action, Object argument) 
    at System.Xaml.Schema.XamlTypeInvoker.DefaultCtorXamlActivator.CallCtorDelegate(XamlTypeInvoker type) 
    at System.Xaml.Schema.XamlTypeInvoker.DefaultCtorXamlActivator.CreateInstance(XamlTypeInvoker type) 
    at System.Xaml.Schema.XamlTypeInvoker.CreateInstance(Object[] arguments) 
    at MS.Internal.Xaml.Runtime.ClrObjectRuntime.CreateInstanceWithCtor(XamlType xamlType, Object[] args) 
    at MS.Internal.Xaml.Runtime.ClrObjectRuntime.CreateInstance(XamlType xamlType, Object[] args) 

InnerException:

+1

Можете ли вы опубликовать полную трассировку стека NRE? –

+0

Вы используете провайдер от 2-17-2010? Если это так, я предполагаю, что он не поддерживает EF 4, поскольку отчет разработчика от 8-16-2010 включает в себя эту заметку: «Работа над поддержкой платформы Entity Framework v4». –

+0

Да, я пользуюсь поставщиком 2-17-2010. Я увижу об этом без EF (это небольшой проект с несколькими таблицами). Я все равно буду признателен за любые данные об источнике этой конкретной ошибки. – DaveK

ответ

5

Моя таблица имеет первичный ключ многопрофильного с некоторыми из полей, являющихся обнуляемым. Рамка сущности не любит поля с нулевым значением в первичном ключе. Я удалил эти строки, и он отлично работает. Я уже в процессе поиска другого решения требования, которое побудило нас разрешить null в некоторых из полей первичного ключа.

Смежные вопросы