powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ2SQL:"Ambiguous match found" при добавлении нескольких индексаторов в сущностный класс
1 сообщений из 1, страница 1 из 1
LINQ2SQL:"Ambiguous match found" при добавлении нескольких индексаторов в сущностный класс
    #36732462
horgh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Не могу найти в чем причина проблемы...

1)Создадим в дизайнере простую таблицу, исходный dbml-файл выглядит следующим образом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<?xml version="1.0" encoding="utf-8"?><Database Name="Northwind" Class="TesterDataContext" xmlns="http://schemas.microsoft.com/linqtosql/dbml/2007">
  <Connection Mode="AppSettings" ConnectionString="Data Source=DAVINCI\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True" SettingsObjectName="ConsoleUtils.Properties.Settings" SettingsPropertyName="NorthwindConnectionString1" Provider="System.Data.SqlClient" />
  <Table Name="dbo.Workers" Member="Workers">
    <Type Name="Worker">
      <Column Name="WorkerId" AutoSync="Never" Type="System.Guid" IsReadOnly="true" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
      <Column Name="Name" Type="System.String" DbType="nvarchar(10) NOT NULL" CanBeNull="false" />
      <Column Name="Desc" Type="System.String" DbType="nvarchar(10) NOT NULL" CanBeNull="false" />
    </Type>
  </Table>
</Database>
2)Создадим некоторый абстрактный класс, содержащий несколько индексаторов:
Код: plaintext
1.
2.
3.
4.
public abstract class WorkerBase
    {
        public abstract Object this[string name] { get; set; }
        public abstract Object this[object index] { get; set; }
    }
3)Созданный дизайнером сущностный класс унаследуем от данного абстрактного класса
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
partial class Worker : WorkerBase
    {
        public override object this[string name]
        {
            get
            {
                //...
            }
            set
            {
                //...
            }
        }

        public override object this[object index]
        {
            get
            {
                //...
            }
            set
            {
                //...
            }
        }
    }

4) Попытаемся сделать обычную выборку из этой таблицы:
Код: plaintext
1.
2.
3.
4.
5.
6.
static void Main(string[] args)
        {
            TesterDataContext dc = new TesterDataContext(@"Data Source=DAVINCI\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True");

            var data = from w in dc.Workers select w;
            ...
        }
5)В результате получаем исключение в следующем месте в коде контекста данных:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
[global::System.Data.Linq.Mapping.DatabaseAttribute(Name="Northwind")]
	public partial class TesterDataContext : System.Data.Linq.DataContext
	{
		...
                public System.Data.Linq.Table<Worker> Workers
		{
			get
			{
				return this.GetTable<Worker>(); //Ошибка здесь!!! 
                                                                //Ambiguous match found.
			}
		}
	}
  

Если оставить только один индексатор (любой), никаких исключений нет...
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ2SQL:"Ambiguous match found" при добавлении нескольких индексаторов в сущностный класс
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]