Как использовать IRepository в Саду с международным ключом (НЕ ИДЕНТИЧНОСТЬ)

Я использую Сад IRepository, чтобы управлять данными, и спасти к db... это - то, что я пытаюсь сделать.

Мой класс:

public class SocietaRecord
{
    public virtual int Id { get; set; }
    public virtual string Club { get; set; }
    public virtual string Email { get; set; }
}

Моя миграция:

SchemaBuilder.CreateTable("SocietaRecord", table => table
    .Column("Id", column => column.PrimaryKey())
    .Column("Club", c => c.Nullable())
    .Column("Email", c => c.Nullable())
);

Обратите внимание на то, что Id не и ИДЕНТИЧНОСТЬ

теперь то, когда я звоню, Хранилище Создают следовать вставку, выполняется: (захваченный с профилировщиком SQL)

exec sp_executesql N'INSERT INTO Match_SocietaRecord 
(Club, Email) VALUES (@p0, @p1); 
select SCOPE_IDENTITY()',N'@p0 nvarchar(4000),@p1 nvarchar(4000),
@p0=N'Test',@p1=NULL

это терпит неудачу, потому что это игнорирует мой Id и предполагает (неправильно), что у Столов есть ключ автоматического номера.

Это - ошибка:

NHibernate.Exceptions.GenericADOException: could not insert:
[Match.Models.SocietaRecord]
[SQL: INSERT INTO Match_SocietaRecord (Club, Email) VALUES (?, ?); 
select SCOPE_IDENTITY()] ---> System.Data.SqlClient.SqlException: 
Cannot insert the value NULL into column 'Id', table ORCHARD.dbo.Match_SocietaRecord'; 
column does not allow nulls. INSERT fails.

Как объясняют хранилищу, чтобы посмотреть на стол и не принимают идентичности, если нет то, так, чтобы я мог вставить свой собственный id? (Да, я предоставил действительный Id на записи объекта прежде, чем создать),

Править: Я вырыл немного в коде, и я думаю что:

  • Неправильная Идентичность происходит из-за Быстрого NHibernate: Авто Соглашения Отображения

  • Сад отвергает неправильный assumpions использование IAutoMappingAlteration

таким образом, я могу изменить свой вопрос в:

Как я могу определить обычай IAutoMappingAlteration для моего класса, чтобы объяснить Сад, что мой Id не идентичность?

или (другими словами)

где я могу найти "конфигурацию автоотображения" в саду, как описано в Автоотображении документации?

https://github.com/jagregory/fluent-nhibernate/wiki/Auto-mapping

(... "Можно изменить способ, которым автокартопостроитель обнаруживает тождества, отвергая метод IsId в конфигурации автоотображения"....),

3
nl ja de

1 ответы

The repository implementation in Orchard is there to be used by higher-level content management API. It is not designed or intended as a general purpose repository implementation or a substitute for an ORM (we have nHibernate under the hoods for that). You should use nHibernate directly. Low-level examples of that in the OrchardPo module: https://bitbucket.org/bleroy/orchardpo/src

0
добавлено
Если it' s совместимый с соглашениями и предположениями, которые были сделаны, почему не, но это doesn' t, кажется, имеют место здесь.
добавлено автор Bertrand Le Roy, источник
Не уверенный я понимаю. Разве я не должен использовать IRepository для, делают простую операцию по свернувшемуся молоку на нескольких столах просто, потому что хранилище принимает идентичность, где нет?
добавлено автор manudea, источник
DotNetRuChat
DotNetRuChat
2 992 участник(ов)

Чат русскоязычного .NET сообщества http://dotnet.ru/ Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @xamarin_russia, @microsoftstackjobs, @uwp_ru Флуд в @dotnettalks

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

pro.net
pro.net
710 участник(ов)

Обсуждение .NET Framework и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). Флудилка: @dotnettalks Участник @proDOT

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

.NET Talks: Force Push Masters
.NET Talks: Force Push Masters
490 участник(ов)

Свободный чат .NET разработчиков. Правила: t.me/dotnettalks/56823 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @microsoftstackjobs, @uwp_ru http://combot.org/chat/-1001128250813

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)

.NET Chat Убежище
.NET Chat Убежище
246 участник(ов)

Чат .NET разработчиков под эгидой MSK/SPB .NET Community Group Вам могут быть интересны: @fsharp_chat, @dotnetruchat, @cilchat, @xamarin_russia, @microsoftstackjobs, @dotnetgroup Флуд в @dotnettalks

.NET CIL Chat
.NET CIL Chat
54 участник(ов)

.NET CIL (aka IL aka MSIL)