diff --git a/CHANGELOG.md b/CHANGELOG.md
index cc8187bd..9ca34b78 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,8 +7,10 @@ This project adheres to [Semantic Versioning](http://semver.org/).
### Added
### Changed
+1. Updated `NewPlatform.Flexberry.ORM` up to `7.1.1-beta01`.
### Fixed
+1. Fixed problem with metadata when inheritance and PublishName is used.
## [7.1.0] - 2023.04.12
diff --git a/NewPlatform.Flexberry.ORM.ODataService.Files/NewPlatform.Flexberry.ORM.ODataService.Files.csproj b/NewPlatform.Flexberry.ORM.ODataService.Files/NewPlatform.Flexberry.ORM.ODataService.Files.csproj
index 6443def9..c95c47da 100644
--- a/NewPlatform.Flexberry.ORM.ODataService.Files/NewPlatform.Flexberry.ORM.ODataService.Files.csproj
+++ b/NewPlatform.Flexberry.ORM.ODataService.Files/NewPlatform.Flexberry.ORM.ODataService.Files.csproj
@@ -21,7 +21,7 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/NewPlatform.Flexberry.ORM.ODataService.WebApi/NewPlatform.Flexberry.ORM.ODataService.WebApi.csproj b/NewPlatform.Flexberry.ORM.ODataService.WebApi/NewPlatform.Flexberry.ORM.ODataService.WebApi.csproj
index c29f2c93..5293c358 100644
--- a/NewPlatform.Flexberry.ORM.ODataService.WebApi/NewPlatform.Flexberry.ORM.ODataService.WebApi.csproj
+++ b/NewPlatform.Flexberry.ORM.ODataService.WebApi/NewPlatform.Flexberry.ORM.ODataService.WebApi.csproj
@@ -22,7 +22,7 @@
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/NewPlatform.Flexberry.ORM.ODataService.nuspec b/NewPlatform.Flexberry.ORM.ODataService.nuspec
index 13a49fab..997f6282 100644
--- a/NewPlatform.Flexberry.ORM.ODataService.nuspec
+++ b/NewPlatform.Flexberry.ORM.ODataService.nuspec
@@ -2,7 +2,7 @@
NewPlatform.Flexberry.ORM.ODataService
- 7.1.0
+ 7.1.1-beta02
Flexberry ORM ODataService
New Platform Ltd.
New Platform Ltd.
@@ -13,7 +13,10 @@
Flexberry ORM OData Service Package.
Changed
- 1. Updated `NewPlatform.Flexberry.ORM` up to `7.1.0`.
+ 1. Updated `NewPlatform.Flexberry.ORM` up to `7.1.1-beta01`.
+
+ Fixed
+ 1. Fixed problem with metadata when inheritance and PublishName is used.
Copyright New Platform Ltd 2023
Flexberry ORM OData ODataService
diff --git a/NewPlatform.Flexberry.ORM.ODataService/Expressions/EdmLibHelpers.cs b/NewPlatform.Flexberry.ORM.ODataService/Expressions/EdmLibHelpers.cs
index 86ab66e7..ef8eddec 100644
--- a/NewPlatform.Flexberry.ORM.ODataService/Expressions/EdmLibHelpers.cs
+++ b/NewPlatform.Flexberry.ORM.ODataService/Expressions/EdmLibHelpers.cs
@@ -351,7 +351,7 @@ private static string EdmName(this Type clrType)
private static string EdmFullName(this Type clrType)
{
- return string.IsNullOrEmpty(clrType.Namespace) ? clrType.EdmName() : string.Format(CultureInfo.InvariantCulture, "{0}.{1}", clrType.Namespace, clrType.EdmName());
+ return string.Format(CultureInfo.InvariantCulture, "{0}.{1}", clrType.Namespace, clrType.EdmName());
}
private static IEdmPrimitiveType GetPrimitiveType(EdmPrimitiveTypeKind primitiveKind)
diff --git a/NewPlatform.Flexberry.ORM.ODataService/Extensions/ODataApplicationBuilderExtensions.cs b/NewPlatform.Flexberry.ORM.ODataService/Extensions/ODataApplicationBuilderExtensions.cs
index 9c936c27..a18efe34 100644
--- a/NewPlatform.Flexberry.ORM.ODataService/Extensions/ODataApplicationBuilderExtensions.cs
+++ b/NewPlatform.Flexberry.ORM.ODataService/Extensions/ODataApplicationBuilderExtensions.cs
@@ -1,11 +1,15 @@
#if NETSTANDARD
namespace NewPlatform.Flexberry.ORM.ODataService.Extensions
{
- using System;
+ using System;
+ using System.IO;
+ using System.Net.Mime;
+ using System.Threading.Tasks;
using Microsoft.AspNet.OData;
using Microsoft.AspNet.OData.Common;
using Microsoft.AspNet.OData.Extensions;
- using Microsoft.AspNetCore.Builder;
+ using Microsoft.AspNetCore.Builder;
+ using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Routing;
using NewPlatform.Flexberry.ORM.ODataService.Middleware;
@@ -30,6 +34,11 @@ public static IApplicationBuilder UseODataService(this IApplicationBuilder app,
VerifyODataServiceIsRegistered(app);
+ app.Use(async (context, next) =>
+ {
+ await RewriteResponse(context, next);
+ });
+
return app
.UseODataBatching()
.UseMiddleware()
@@ -48,6 +57,59 @@ private static void VerifyODataServiceIsRegistered(IApplicationBuilder app)
throw Error.InvalidOperation(SRResources.MissingODataServices, nameof(IPerRouteContainer));
}
}
+
+ ///
+ /// Removing of extra symbols from response.
+ ///
+ /// Context of request.
+ /// Next middleware.
+ /// Formed task.
+ public static async Task RewriteResponse(HttpContext context, Func next)
+ {
+ /* Same code for NETFRAMEWORK is placed on NewPlatform.Flexberry.ORM.ODataService.Handlers.PostPatchHandler.*/
+ using (var responseBodyStream = new MemoryStream())
+ {
+ Stream bodyStream = context.Response.Body;
+
+ try
+ {
+ context.Response.Body = responseBodyStream;
+
+ await next();
+
+ responseBodyStream.Seek(0, SeekOrigin.Begin);
+ var responseBody = new StreamReader(responseBodyStream).ReadToEnd();
+
+ //Modify the response in some way.
+ if (context.Response.ContentType != null &&
+ (context.Response.ContentType.Contains("application/json")
+ || context.Response.ContentType.Contains("application/xml")
+ || context.Response.ContentType.Contains("multipart/mixed")))
+ {
+ responseBody = responseBody
+ .Replace("(____.", "(")
+ .Replace("\"____.", "\"")
+ .Replace("____.", ".")
+ .Replace(" Namespace=\"____\"", " Namespace=\"\"");
+ }
+
+ using (MemoryStream newStream = new MemoryStream())
+ {
+ using StreamWriter sw = new StreamWriter(newStream);
+ sw.Write(responseBody);
+ sw.Flush();
+
+ newStream.Seek(0, SeekOrigin.Begin);
+
+ await newStream.CopyToAsync(bodyStream);
+ }
+ }
+ finally
+ {
+ context.Response.Body = bodyStream;
+ }
+ }
+ }
}
}
#endif
diff --git a/NewPlatform.Flexberry.ORM.ODataService/Handlers/PostPatchHandler.cs b/NewPlatform.Flexberry.ORM.ODataService/Handlers/PostPatchHandler.cs
index ae7c0e1d..37ceafba 100644
--- a/NewPlatform.Flexberry.ORM.ODataService/Handlers/PostPatchHandler.cs
+++ b/NewPlatform.Flexberry.ORM.ODataService/Handlers/PostPatchHandler.cs
@@ -1,6 +1,10 @@
#if NETFRAMEWORK
namespace NewPlatform.Flexberry.ORM.ODataService.Handlers
-{
+{
+ using Microsoft.AspNet.OData.Batch;
+ using System;
+ using System.IO;
+ using System.Net;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
@@ -33,8 +37,13 @@ public class PostPatchHandler : DelegatingHandler
public const string AcceptApplicationMsExcel = "PostPatchHandler_AcceptApplicationMsExcel";
///
- protected override Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
+ protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
+ if (request == null)
+ {
+ throw new ArgumentNullException(nameof(request));
+ }
+
foreach (var val in request.Headers.Accept)
{
if (val.MediaType == "application/ms-excel")
@@ -62,9 +71,54 @@ protected override Task SendAsync(HttpRequestMessage reques
/// Исправление для Mono, взято из https://github.com/OData/odata.net/issues/165
*/
if (!request.Headers.Contains("Accept-Charset"))
- request.Headers.Add("Accept-Charset", new[] { "utf-8" });
+ request.Headers.Add("Accept-Charset", new[] { "utf-8" });
+
+ HttpResponseMessage responseMessage = await base.SendAsync(request, cancellationToken);
+ await RewriteResponse(responseMessage);
+ return responseMessage;
+
+ }
- return base.SendAsync(request, cancellationToken);
+ ///
+ /// Удаление некорректных символов в именах типов метаданных.
+ /// Данные символы добавляются специально, чтобы MS не бросало исключение на пустой Namespace у типов с PublishName.
+ ///
+ /// Текущее ответное сообщение, в котором могут быть заменены символы.
+ /// Задача на обработку.
+ private static async Task RewriteResponse(HttpResponseMessage response)
+ {
+ /* Same code for NETSTANDARD is placed on NewPlatform.Flexberry.ORM.ODataService.Extensions.ODataApplicationBuilderExtensions.*/
+ string contentType = response?.Content?.Headers?.ContentType?.MediaType;
+ if (!string.IsNullOrEmpty(contentType) &&
+ (contentType.Contains("application/json")
+ || contentType.Contains("application/xml")
+ || contentType.Contains("multipart/mixed")))
+ {
+ HttpContent content = response.Content;
+ Stream contentStream = await content.ReadAsStreamAsync();
+ string responseStr = new StreamReader(contentStream).ReadToEnd();
+ if (!string.IsNullOrEmpty(responseStr) && responseStr.Length > 3)
+ {
+ responseStr = responseStr
+ .Replace("(____.", "(")
+ .Replace("\"____.", "\"")
+ .Replace("____.", ".")
+ .Replace(" Namespace=\"____\"", " Namespace=\"\"");
+
+ using (MemoryStream newStream = new MemoryStream())
+ {
+ using StreamWriter sw = new StreamWriter(newStream);
+ sw.Write(responseStr);
+ sw.Flush();
+ newStream.Seek(0, SeekOrigin.Begin);
+
+ contentStream.Position = 0;
+ contentStream.SetLength(responseStr.Length);
+
+ await newStream.CopyToAsync(contentStream);
+ }
+ }
+ }
}
}
}
diff --git a/NewPlatform.Flexberry.ORM.ODataService/Model/DataObjectEdmModel.cs b/NewPlatform.Flexberry.ORM.ODataService/Model/DataObjectEdmModel.cs
index 0b9f94e3..c386f791 100644
--- a/NewPlatform.Flexberry.ORM.ODataService/Model/DataObjectEdmModel.cs
+++ b/NewPlatform.Flexberry.ORM.ODataService/Model/DataObjectEdmModel.cs
@@ -153,10 +153,7 @@ private void BuildTypeHierarchy()
else
_typeHierarchy[baseDataObjectType].Add(dataObjectType);
- string nameSpace = GetEntityTypeNamespace(dataObjectType);
- string typeName = GetEntityTypeName(dataObjectType);
-
- var typeFullName = string.IsNullOrEmpty(nameSpace) ? typeName : $"{nameSpace}.{typeName}";
+ var typeFullName = $"{GetEntityTypeNamespace(dataObjectType)}.{GetEntityTypeName(dataObjectType)}";
if (!_aliasesNameToProperty.ContainsKey(typeFullName))
{
_aliasesNameToProperty.Add(typeFullName, new Dictionary());
@@ -724,7 +721,7 @@ private string GetEntityTypeName(Type type)
var nameSpace = GetEntityTypeNamespace(type);
if (type != typeof(DataObject) && EdmModelBuilder != null && EdmModelBuilder.EntityTypeNameBuilder != null)
name = EdmModelBuilder.EntityTypeNameBuilder(type);
- var fullname = string.IsNullOrEmpty(nameSpace) ? name : $"{nameSpace}.{name}";
+ var fullname = $"{nameSpace}.{name}";
if (!_aliasesNameToType.ContainsKey(fullname))
_aliasesNameToType.Add(fullname, type);
if (!_aliasesTypeToName.ContainsKey(type))
@@ -762,9 +759,7 @@ private string GetEntityPropertyName(PropertyInfo prop)
var name = prop.Name;
if (name != KeyPropertyName && prop.DeclaringType != typeof(DataObject) && EdmModelBuilder != null && EdmModelBuilder.EntityPropertyNameBuilder != null)
name = EdmModelBuilder.EntityPropertyNameBuilder(prop);
- string nameSpace = GetEntityTypeNamespace(prop.DeclaringType);
- string typeName = GetEntityTypeName(prop.DeclaringType);
- string typeFullName = string.IsNullOrEmpty(nameSpace) ? typeName : $"{nameSpace}.{typeName}";
+ var typeFullName = $"{GetEntityTypeNamespace(prop.DeclaringType)}.{GetEntityTypeName(prop.DeclaringType)}";
if (!_aliasesNameToProperty.ContainsKey(typeFullName))
{
_aliasesNameToProperty.Add(typeFullName, new Dictionary());
diff --git a/NewPlatform.Flexberry.ORM.ODataService/Model/DefaultDataObjectEdmModelBuilder.cs b/NewPlatform.Flexberry.ORM.ODataService/Model/DefaultDataObjectEdmModelBuilder.cs
index 9115e228..63f84ab6 100644
--- a/NewPlatform.Flexberry.ORM.ODataService/Model/DefaultDataObjectEdmModelBuilder.cs
+++ b/NewPlatform.Flexberry.ORM.ODataService/Model/DefaultDataObjectEdmModelBuilder.cs
@@ -324,8 +324,7 @@ private string BuildEntitySetName(Type dataObjectType)
string typeName = BuildEntityTypeName(dataObjectType);
string nameSpace = BuildEntityTypeNamespace(dataObjectType);
- return string.Concat((_useNamespaceInEntitySetName && !string.IsNullOrEmpty(nameSpace)) ? $"{nameSpace}.{typeName}".Replace(".", string.Empty) : typeName, "s"/* "Aliases"*/).Replace("_", string.Empty);
- //return string.Concat(_useNamespaceInEntitySetName ? dataObjectType.FullName.Replace(".", string.Empty) : dataObjectType.Name, "s"/* "Aliases"*/).Replace("_", string.Empty);
+ return string.Concat(_useNamespaceInEntitySetName ? $"{nameSpace}.{typeName}".Replace(".", string.Empty) : typeName, "s").Replace("_", string.Empty);
}
///
diff --git a/NewPlatform.Flexberry.ORM.ODataService/NewPlatform.Flexberry.ORM.ODataService.csproj b/NewPlatform.Flexberry.ORM.ODataService/NewPlatform.Flexberry.ORM.ODataService.csproj
index f5e49399..956c37a7 100644
--- a/NewPlatform.Flexberry.ORM.ODataService/NewPlatform.Flexberry.ORM.ODataService.csproj
+++ b/NewPlatform.Flexberry.ORM.ODataService/NewPlatform.Flexberry.ORM.ODataService.csproj
@@ -26,7 +26,7 @@
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/NewPlatform.Flexberry.ORM.ODataServiceCore.Common/NewPlatform.Flexberry.ORM.ODataServiceCore.Common.csproj b/NewPlatform.Flexberry.ORM.ODataServiceCore.Common/NewPlatform.Flexberry.ORM.ODataServiceCore.Common.csproj
index 959f3040..bc24bf67 100644
--- a/NewPlatform.Flexberry.ORM.ODataServiceCore.Common/NewPlatform.Flexberry.ORM.ODataServiceCore.Common.csproj
+++ b/NewPlatform.Flexberry.ORM.ODataServiceCore.Common/NewPlatform.Flexberry.ORM.ODataServiceCore.Common.csproj
@@ -26,7 +26,7 @@
-
+
diff --git a/Tests/BusinessServers/NewPlatform.Flexberry.ORM.ODataService.Tests.BusinessServers.csproj b/Tests/BusinessServers/NewPlatform.Flexberry.ORM.ODataService.Tests.BusinessServers.csproj
index e5c2a1e5..42fd38a2 100644
--- a/Tests/BusinessServers/NewPlatform.Flexberry.ORM.ODataService.Tests.BusinessServers.csproj
+++ b/Tests/BusinessServers/NewPlatform.Flexberry.ORM.ODataService.Tests.BusinessServers.csproj
@@ -14,10 +14,10 @@
-
-
-
-
+
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/GetTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/GetTest.cs
new file mode 100644
index 00000000..019014ad
--- /dev/null
+++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/GetTest.cs
@@ -0,0 +1,106 @@
+namespace NewPlatform.Flexberry.ORM.ODataService.Tests.CRUD.Read
+{
+ using System;
+ using System.Collections.Generic;
+ using System.Net;
+ using System.Net.Http;
+
+ using ICSSoft.STORMNET;
+ using ICSSoft.STORMNET.UserDataTypes;
+ using ICSSoft.STORMNET.Windows.Forms;
+
+ using NewPlatform.Flexberry.ORM.ODataService.Tests.Extensions;
+
+ using Newtonsoft.Json;
+ using Newtonsoft.Json.Linq;
+
+ using Xunit;
+
+ ///
+ /// Класс тестов для проверки корректной обработки Get-запросов.
+ ///
+ public class GetTest : BaseODataServiceIntegratedTest
+ {
+#if NETCOREAPP
+ ///
+ /// Конструктор по-умолчанию.
+ ///
+ /// Фабрика для приложения.
+ /// Вывод отладочной информации.
+ public GetTest(CustomWebApplicationFactory factory, Xunit.Abstractions.ITestOutputHelper output)
+ : base(factory, output)
+ {
+ }
+#endif
+
+ ///
+ /// Проверка получения данных для классов, в которых есть нехранимые поля, который не содержат setter'ов.
+ /// (Такие варианты присутствуют в старом коде).
+ ///
+ [Fact]
+ public void TestGetNotStored()
+ {
+ ActODataService(args =>
+ {
+ LegoBlock block = new LegoBlock { Name = "Легосити" };
+ var objs = new DataObject[] { block };
+ args.DataService.UpdateObjects(ref objs);
+
+ string requestUrl = string.Format(
+ "http://localhost/odata/{0}?$select=__PrimaryKey,AssocType",
+ args.Token.Model.GetEdmEntitySet(typeof(LegoBlock)).Name);
+
+ // Обращаемся к OData-сервису и обрабатываем ответ.
+ using (HttpResponseMessage response = args.HttpClient.GetAsync(requestUrl).Result)
+ {
+ // Убедимся, что запрос завершился успешно.
+ Assert.Equal(HttpStatusCode.OK, response.StatusCode);
+
+ // Получим строку с ответом.
+ string receivedStr = response.Content.ReadAsStringAsync().Result.Beautify();
+
+ // Преобразуем полученный объект в словарь.
+ Dictionary receivedDict = JsonConvert.DeserializeObject>(receivedStr);
+
+ Assert.Equal(1, ((JArray)receivedDict["value"]).Count);
+ }
+ });
+ }
+
+ ///
+ /// Проверка значение в атрибуте @odata.type.
+ ///
+ [Fact]
+ public void TestGetWithMaster()
+ {
+ ActODataService(args =>
+ {
+ LegoBlock block = new LegoBlock { Name = "Легосити" };
+ LegoPatent patent = new LegoPatent { Name = "ZeroM", BaseLegoBlock = block, Date = DateTime.Now };
+ var objs = new DataObject[] { block, patent };
+ args.DataService.UpdateObjects(ref objs);
+
+ string requestUrl = string.Format(
+ "http://localhost/odata/{0}?$select=__PrimaryKey,Name&$expand=BaseLegoBlock($select=__PrimaryKey,Name)",
+ args.Token.Model.GetEdmEntitySet(typeof(LegoPatent)).Name);
+
+ // Обращаемся к OData-сервису и обрабатываем ответ.
+ using (HttpResponseMessage response = args.HttpClient.GetAsync(requestUrl).Result)
+ {
+ // Убедимся, что запрос завершился успешно.
+ Assert.Equal(HttpStatusCode.OK, response.StatusCode);
+
+ // Получим строку с ответом.
+ string receivedStr = response.Content.ReadAsStringAsync().Result.Beautify();
+
+ // Преобразуем полученный объект в словарь.
+ Dictionary receivedDict = JsonConvert.DeserializeObject>(receivedStr);
+
+ Assert.Equal(1, ((JArray)receivedDict["value"]).Count);
+ Assert.Contains("@odata.type", receivedStr);
+ Assert.DoesNotContain("____", receivedStr);
+ }
+ });
+ }
+ }
+}
diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/MetaDataTest.cs b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/MetaDataTest.cs
index 3f388322..e90fbf41 100644
--- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/MetaDataTest.cs
+++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/CRUD/Read/MetaDataTest.cs
@@ -98,6 +98,7 @@ public void GetFullMetadataTest()
Assert.True(!string.IsNullOrEmpty(receivedData));
Assert.StartsWith("", receivedData);
+ Assert.DoesNotContain("____", receivedData);
}
});
}
diff --git a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/NewPlatform.Flexberry.ORM.ODataService.Tests.csproj b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/NewPlatform.Flexberry.ORM.ODataService.Tests.csproj
index ec8bcc03..e91c942a 100644
--- a/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/NewPlatform.Flexberry.ORM.ODataService.Tests.csproj
+++ b/Tests/NewPlatform.Flexberry.ORM.ODataService.Tests/NewPlatform.Flexberry.ORM.ODataService.Tests.csproj
@@ -40,9 +40,9 @@
-
-
-
+
+
+
diff --git a/Tests/Objects/BaseLegoBlock.cs b/Tests/Objects/BaseLegoBlock.cs
index f293872f..c3c45511 100644
--- a/Tests/Objects/BaseLegoBlock.cs
+++ b/Tests/Objects/BaseLegoBlock.cs
@@ -39,12 +39,20 @@ public class BaseLegoBlock : ICSSoft.STORMNET.DataObject
private NewPlatform.Flexberry.ORM.ODataService.Tests.LegoBlockColor fColor;
private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfLegoPatent fPatents;
-
+
// *** Start programmer edit section *** (BaseLegoBlock CustomMembers)
+ [NotStored]
+ public virtual string AssocType
+ {
+ get
+ {
+ return GetType().Name;
+ }
+ }
// *** End programmer edit section *** (BaseLegoBlock CustomMembers)
-
+
///
/// Name.
///
diff --git a/Tests/Objects/LegoBlock.cs b/Tests/Objects/LegoBlock.cs
index 655dcf7b..47d1db04 100644
--- a/Tests/Objects/LegoBlock.cs
+++ b/Tests/Objects/LegoBlock.cs
@@ -48,12 +48,22 @@ public class LegoBlock : NewPlatform.Flexberry.ORM.ODataService.Tests.BaseLegoBl
private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfLegoBlockCustomPanel fCustomPanels;
private NewPlatform.Flexberry.ORM.ODataService.Tests.DetailArrayOfLegoBlockTopPanel fTopPanels;
-
+
// *** Start programmer edit section *** (LegoBlock CustomMembers)
+ [NotStored]
+ [DataServiceExpression(typeof(ICSSoft.STORMNET.Business.PostgresDataService), "'Association'")]
+ public override string AssocType
+ {
+ get
+ {
+ return base.AssocType;
+ }
+ }
+
// *** End programmer edit section *** (LegoBlock CustomMembers)
-
+
///
/// Width.
///
diff --git a/Tests/Objects/NewPlatform.Flexberry.ORM.ODataService.Tests.Objects.csproj b/Tests/Objects/NewPlatform.Flexberry.ORM.ODataService.Tests.Objects.csproj
index c0fe08bd..7ae77c6e 100644
--- a/Tests/Objects/NewPlatform.Flexberry.ORM.ODataService.Tests.Objects.csproj
+++ b/Tests/Objects/NewPlatform.Flexberry.ORM.ODataService.Tests.Objects.csproj
@@ -14,10 +14,10 @@
-
-
-
-
+
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git "a/Tests/Objects/\320\234\320\265\320\264\320\262\320\265\320\264\321\214.cs" "b/Tests/Objects/\320\234\320\265\320\264\320\262\320\265\320\264\321\214.cs"
index 48d23425..2f2b5414 100644
--- "a/Tests/Objects/\320\234\320\265\320\264\320\262\320\265\320\264\321\214.cs"
+++ "b/Tests/Objects/\320\234\320\265\320\264\320\262\320\265\320\264\321\214.cs"
@@ -326,6 +326,8 @@ public virtual ICSSoft.STORMNET.UserDataTypes.NullableDateTime ДатаРожд
[StrLen(255)]
[DataServiceExpression(typeof(ICSSoft.STORMNET.Business.MSSQLDataService), "\'ПорядковыйНомер:\' + @ПорядковыйНомер@ + \", Цвет глаз мамы:\" + isnull(@Мама.ЦветГ" +
"лаз@,\'\')")]
+ [DataServiceExpression(typeof(ICSSoft.STORMNET.Business.PostgresDataService), "\'ПорядковыйНомер:\' || @ПорядковыйНомер@ || \", Цвет глаз мамы:\" || coalesce(@Мама.ЦветГ" +
+ "лаз@,\'\')")]
public virtual string МедведьСтрокой
{
get