LinqtoSQL - проблема с отображением: невозможно определить корень для типа - PullRequest
0 голосов
/ 10 июля 2009

Мы экспериментируем с несколькими различными уровнями персистентности для нашего текущего проекта. Мы пытаемся использовать подход POCO / PI. Одним из наших кандидатов является LinqToSql. Я слежу за работой, представленной Виджаем Мехтой в «Реляционном сопоставлении объектов Pro LINQ с C # 2008», в котором POCO и файлы сопоставления создаются вручную.

У меня есть следующее POCO:

namespace CIN.CIN2010.DomainModel.Notifications
{
    public abstract class Notification //: Repository.BaseEntity
    {

        public Notification(int notificationId, OwnerTag owner, DateTime creationDateTime, string message)
        {
            this._notificatonId = notificationId;
            this._owner = owner;
            this._creationDateTime = creationDateTime;
            this._message = message;
        }

        // omitted for brevity
    }
}

и у меня есть это для файла сопоставления:

<Database Name="CINFulfillment" xmlns="http://schemas.microsoft.com/linqtosql/mapping/2007">
  <Table Name="dbo.tblNotifications" >
      <Type Name="CIN.CIN2010.DomainModel.Notifications.Notification, CIN.CIN2010.DomainModel" InheritanceCode="0" IsInheritanceDefault="true">
        <Column Name="NotificationID" Member="NotificationID" Storage="_NotificationID" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="true" AutoSync="OnInsert" />
        <Column Name="NotificationTypeID" Member="NotificationTypeID" Storage="_NotificationTypeID" DbType="TinyInt NOT NULL" />
        <Column Name="OwnerID" Member="OwnerID" Storage="_OwnerID" DbType="Int NOT NULL" />
        <Column Name="OwnerTypeID" Member="OwnerTypeID" Storage="_OwnerTypeID" DbType="TinyInt NOT NULL" />
        <Column Name="SubTypeID" Member="SubTypeID" Storage="_SubTypeID" DbType="TinyInt NOT NULL" />
        <Column Name="CreationDateTime" Member="CreationDateTime" Storage="_CreationDateTime" DbType="SmallDateTime NOT NULL" />
        <Column Name="Message" Member="Message" Storage="_Message" DbType="VarChar(255) NOT NULL" CanBeNull="false" />
        <Column Name="RequiresAction" Member="RequiresAction" Storage="_RequiresAction" DbType="Bit NOT NULL" />
        <Column Name="ActionTypeID" Member="ActionTypeID" Storage="_ActionTypeID" DbType="TinyInt" />
        <Column Name="DueDateTime" Member="DueDateTime" Storage="_DueDateTime" DbType="SmallDateTime" />
        <Column Name="CompletedDateTime" Member="CompletedDateTime" Storage="_CompletedDateTime" DbType="SmallDateTime" />
        <Column Name="CompletedStatusID" Member="CompletedStatusID" Storage="_CompletedStatusID" DbType="TinyInt NOT NULL" />
      </Type>
  </Table>
</Database>

Когда я пытаюсь загрузить mappingsource, я получаю сообщение об ошибке:

Сбой CanInstantiateDataContext CIN.CIN2010.Persistence.L2S.Test Метод теста CIN.CIN2010.Persistence.L2S.Test.ContextTests.CanInstantiateDataContext вызвал исключение: исключение System.TypeInitializationException: инициализатор типа вызывал N ---> System.InvalidOperationException: сопоставление Проблема: не удается разрешить корень для типа 'CIN.CIN2010.DomainModel.Notifications.Notification' ..

Есть идеи?

1 Ответ

1 голос
/ 29 ноября 2010

Удалить ", CIN.CIN2010.DomainModel" из атрибута Name. Linq to SQL находит саму сборку.

...