Как (легко) найти правильную сборку для заданного пространства имен - PullRequest
3 голосов
/ 09 февраля 2011

У меня проблемы с некоторыми атрибутами. Я не могу найти правильную сборку. Я не могу найти их в Google тоже:

 [Key, Column(Order = 0)]
 [DatabaseGenerated(DatabaseGenerationOption.None)]

В этом коде объявлены следующие пространства имен:

using System.Data.Entity.Database;
using System.Data.Entity.Infrastructure;

Где я могу найти сборки для этих пространств имен? Разве нет простого способа найти сборку, кроме поиска пространства имен в Google?

Ответы [ 7 ]

2 голосов
/ 13 июля 2011

Удалить все System.Data.* ссылки из проекта, добавить ссылку EntityFramework, опция DatabaseGeneratedOption (не DatabaseGenerationOption).

2 голосов
/ 09 февраля 2011

Если у вас есть ссылка на сборку:

  • Перейти к декларации. (F12 в Visual Studio, когда курсор находится на искомом определении.)
  • Должен появиться Object Browser . В корне дерева вы можете увидеть сборку.

Если вы не ссылались на сборку:

  • Вы все еще можете использовать Обозреватель объектов для поиска вашей сборки ( Вид -> Обозреватель объектов ).
  • В раскрывающемся списке выберите «Все компоненты» , ... и выполните поиск.

Когда вы ищете классы не от Microsoft:

Кажется, классы, которые вы ищете, не из Microsoft. В этом случае вы можете создать «пользовательский набор компонентов» в Обозревателе объектов . Вы можете добавить все сторонние сборки, которые хотите найти. Наконец, если у вас нет самих сборок, я думаю, все, что осталось сделать, это Google.

1 голос
/ 05 апреля 2012

Может быть, немного поздно, но я застрял с той же проблемой, вот что я сделал, чтобы исправить это:

  1. Установите последнюю версию Entity Framework, следуя инструкции на: http://nuget.org/packages/entityframework

  2. По какой-то причине они изменили имя свойства вместо DatabaseGenerationOption
    измените его для DatabaseGeneratedOption

И это работает.

1 голос
/ 09 февраля 2011

Проблема в том, что namespace не является гражданином первого класса в CLR.namespace + class name представляет полное имя класса.Так что это просто общий префикс.Очевидный вывод состоит в том, что пространство имен может быть распределено по различным сборкам.Вы можете попробовать, загрузив сборки по одной и проверив полное имя каждого типа для префикса (StartsWith), который будет именем пространства имен, которое вы пытаетесь найти.

0 голосов
/ 06 ноября 2014

Вот ваше решение добавить это разрешение пространства имен:

using System.ComponentModel.DataAnnotations.Schema;
0 голосов
/ 09 февраля 2011

Это хороший вопрос, боюсь, я не знаю лучшего ответа, чем Google или MSDN, если это вещь Microsoft.

Проблема усугубляется тем фактом, что данное пространство имен может быть объявлено в нескольких сборках. И наоборот, сборка может объявлять более одного пространства имен.

Обратите внимание, что этот вопрос в значительной степени дублирует ту часть вашего вопроса, на которую я отвечаю.

0 голосов
/ 09 февраля 2011

Из MSDN документы , большинство, если не все классы из этого пространства имен находятся в System.Data.Entity.Design.dll, поэтому я считаю, что это должно быть.

На всех страницах документации MSDN указано пространство имен и сборка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...