2016-02-25 2 views
0

У меня есть следующий бит кода и хотел бы добавить его в keyvaluepair List/Array/Dictionary, который лучше всего работает.Добавление элементов в список ключевых слов Список

Немного фона: В настоящее время этот фрагмент взаимодействует непосредственно с БД, и он находится внутри цикла, который подталкивает к БД на каждой итерации данные. Мое общее намерение состоит в том, чтобы подтолкнуть эти данные к списку/словарю и т. Д., Чтобы я мог одновременно вывести все данные в БД. Вот оно:

_dataContext.GetRepository<UserRole, Guid>().Insert(new[] 
     { 
      new UserRole 
      { 
       Id = Guid.NewGuid(), 
       UserId = newGroup.CreatedById, 
       RoleId = SecurityConstants.RoleId.GROUP_ADMINISTRATOR, 
       GroupId = newGroup.Id, 
       CreatedById = newGroup.CreatedById 
      }, 
      new UserRole 
      { 
       Id = Guid.NewGuid(), 
       RoleId = SecurityConstants.RoleId.CONTACT_PERSON, 
       UserId = newGroup.CreatedById, 
       GroupId = newGroup.Id, 
       CreatedById = newGroup.CreatedById 
      } 
     }); 

Вышеупомянутый GetRepository затем обращается к БД, как описано выше. Я хотел бы хранить данные отдельно в зависимости от того, способ работает, так что я может подтолкнуть его к БД позже

public interface IMydDataContext : IDisposable 
{ 
    IRepository<TEntity, TKrey> GetRepository<TEntity, TKrey>() where TEntity : class, IDomainObject<TKrey>; 
    IDbSet<TEntity> Set<TEntity, TKey>() where TEntity : class, IDomainObject<TKey>; 
    int SaveChanges(); 
    Task<int> SaveChangesAsync(); 
} 

Я объявляю словарь здесь:

Dictionary<UserRole, Guid> _usersRepositoryDictionary = new  Dictionary<UserRole, Guid>(); 

и попытаться поместить данные в нем таким образом:

_usersRepositoryDictionary.Add(new[] { new UserRole 
     { 
      Id = Guid.NewGuid(), 
      UserId = newGroup.CreatedById, 
      RoleId = SecurityConstants.RoleId.GROUP_ADMINISTRATOR, 
      GroupId = newGroup.Id, 
      CreatedById = newGroup.CreatedById 
     }, 
      new UserRole 
     { 
      Id = Guid.NewGuid(), 
      RoleId = SecurityConstants.RoleId.CONTACT_PERSON, 
      UserId = newGroup.CreatedById, 
      GroupId = newGroup.Id, 
      CreatedById = newGroup.CreatedById 
     } 
     }); 

Однако я получаю индикатор ошибки над «Добавить», что говорит, «нет ни одного аргумента, при условии, что соответствует требуемому формальному параметру„значению“Dictionary.Add (UserRole, Guid)»

Любые подсказки, что я делаю неправильно?

+1

В чем проблема? В частности: где 'Insert' хранит ваши данные? – HimBromBeere

+0

Вставка отправляет данные в пользовательский репозиторий для доступа к Db @HimBromBeere Я просто добавил его как вышеизложенное – Chuckles

+0

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

ответ

1

Вы определяете свой словарь, как это:

Dictionary<UserRole, Guid> _usersRepositoryDictionary = new  Dictionary<UserRole, Guid>(); 

и добавить к нему так:

 _usersRepositoryDictionary.Add(new[] { new UserRole 
     { 
      Id = Guid.NewGuid(), 
      UserId = newGroup.CreatedById, 
      RoleId = SecurityConstants.RoleId.GROUP_ADMINISTRATOR, 
      GroupId = newGroup.Id, 
      CreatedById = newGroup.CreatedById 
     }, 
      new UserRole 
     { 
      Id = Guid.NewGuid(), 
      RoleId = SecurityConstants.RoleId.CONTACT_PERSON, 
      UserId = newGroup.CreatedById, 
      GroupId = newGroup.Id, 
      CreatedById = newGroup.CreatedById 
     } 
     }); 

Вы добавляете к нему dict.Add (новый UserRole [] {.. .}), когда вы должны добавить dict.Add (UserRole, Guid);

Вам нужно что-то вроде этого:

var userRole = new UserRole 
    { 
     Id = Guid.NewGuid(), 
     UserId = newGroup.CreatedById, 
     RoleId = SecurityConstants.RoleId.GROUP_ADMINISTRATOR, 
     GroupId = newGroup.Id, 
     CreatedById = newGroup.CreatedById 
    }; 

    _usersRepositoryDictionary.Add(userRole, userRole.Id); 

И теперь это может быть ясно, что информация Id довольно много излишним, поэтому я предлагаю лучше абстракции ваших моделей данных (например, то, что наследуется IEntity, который имеет свойство Id).

+0

это решение наиболее определенно работает. Спасибо.У меня есть проблема с использованием этого списка с функцией GetRepository, упомянутой во второй части моего вопроса. Однако я опубликую это во втором вопросе. Я рассматриваю этот ответ на решение вышеупомянутой проблемы добавления ключа, VALUE PAIR в список. – Chuckles

+0

Можете ли вы более четко указать вторую проблему в своем вопросе (с помощью GetRepository), чтобы мы могли отметить это как разрешенное? Я не совсем понял проблему. –

+0

этот конкретный вопрос разрешен, поскольку соответствующие данные были добавлены в список в соответствии с запросом. Я отметил это как таковой. FYI второй вопрос в основном, как сохранить это в базе данных, называется: «Добавление KeyValue List OR Dictionary в DBInterface» – Chuckles