У меня есть 2 проекта в решении: библиотека классов C # и библиотека F #.
Библиотека C # имеет следующий класс:
using System;
namespace TestFSharpDataLayer.Domain
{
public class TestData
{
public Guid Id { get; set; }
public string Nickname { get; set; }
public DateTime StartDate { get; set; }
public bool Active { get; set; }
public byte[] Fingerprint { get; set; }
public char Prefix { get; set; }
public int Multiplier { get; set; }
}
}
Я пишу модуль вбиблиотека F # для получения данных из базы данных MSSQL, и я хочу, чтобы моя функция List возвращала массив объектов TestData
. Я использую SQLProvider в библиотеке F #.
Код модуля:
namespace TestFSharpDataLayer.Infrastructure
module PersonasRepository =
open FSharp.Data.Sql
open FSharp.Data.Sql.Common
open TestFSharpDataLayer.Domain
type private sql = SqlDataProvider<DatabaseProviderTypes.MSSQLSERVER,"server=(localdb)\MSSQLLocalDB;Database=Test;Trusted_Connection=true;">
let private context = sql.GetDataContext()
let private ListarInternal (pagina : int) =
query {
for c in context.Dbo.TestData do
sortBy (c.GetColumn "Nickname")
skip ((pagina - 1) * 15)
take 15
select c
}
|> Seq.map EntityToTestData
|> Seq.toArray
let private EntityToTestData (entity : sql.dataContext.``dbo.test_dataEntity``) : TestData =
new TestData(Id = entity["Id"], Nickname = entity["Nickname"])
let Listar (pagina : int) =
match pagina with
| t when t > 0 -> ListarInternal(pagina)
| _ -> null
Проблема в том, что я не могу заставить модуль распознавать класс TestData
. На библиотеку C # есть ссылка в библиотеке F #, но предложение open TestFSharpDataLayer.Domain
не распознается Intellisense, а также выдает ошибку времени компиляции (TestFSharpDataLayer namespace not defined
). Visual Studio не показывает предупреждений.
Что я делаю не так?