Я тестировал dapper со структурой таблицы, как указано в SQL ниже
CREATE TABLE [dbo].[Layer](
[Name] [nvarchar](50) NOT NULL,
[Key] [nvarchar](255) NULL,
[FeatureColumn] [nvarchar](255) NULL,
[Description] [nvarchar](255) NULL,
[Defaults] [nvarchar](255) NULL,
[Comments] [nvarchar](255) NULL,
PRIMARY KEY ([Name] ASC)
)
CREATE TABLE [dbo].[Theme](
[Name] [nvarchar](50) NOT NULL,
[IsDefault] [bit] NULL,
[Field] [nvarchar](255) NULL,
[Layer] [nvarchar](255) NULL,
PRIMARY KEY ([Name] ASC)
)
SQL для генерации данных в таблицах
INSERT INTO LAYER
(Name ,[Key] ,[Description] ,Defaults,Comments)
SELECT 'MOJO' ,'ADM1','Administrative' ,'NULL' ,'NULL' UNION ALL
SELECT 'Roads' ,'LID' ,'Roads' ,'NULL' ,'NULL'
INSERT INTO Theme (Name,IsDefault,Field,Layer)
SELECT 'M01',1,'ADM1','MOJO'
объектами POCO были Layer и Theme, хотя я не упомянул об этом в SQL, существует связь между таблицей Layer и таблицей Theme Theme.Layer -> Layer
public class Layer
{
public virtual string Name { get; set; }
public virtual string Key { get; set; }
public virtual string Description{ get; set; }
public virtual ICollection<Theme> Themes { get; set; }
public virtual string Defaults { get; set; }
public virtual string Comments { get; set; }
public Layer()
{
Themes = new List<Theme>();
}
}
public class Theme
{
public virtual string Name { get; set; }
public virtual bool IsDefault { get; set; }
public virtual string Field { get; set; }
public virtual Layer Layer { get; set; }
public Theme()
{
}
}
Я получаю следующую ошибку, когда пытаюсь сопоставить слой и тему в одном запросе, например:
var sql = @"SELECT * FROM Layer AS a LEFT OUTER JOIN
Theme AS b ON a.Name = b.Layer";
var k = conn.Query<Layer,Theme, Theme>(
sql,
(a, b) => { a.Themes.Add(b); return a ; },
splitOn: "Name"
);
Возникшее исключение
Error parsing column 9 (Layer=MOJO - String)
Может кто подскажет в чем может быть дело