This question is locked. New answers and comments are not allowed.
Hello
I need calculated column on PostgreSql backend. It's work in almost case.
I define my model like this:
public
class
MyEntity{
public
int
IdMyEntity;
public
string
Display;
public
int
CalculatedColumn;
}
MappingConfiguration<MyEntity> configuration =
new
MappingConfiguration<MyEntity>();
configuration.MapType(x =>
new
{
IdMyEntity = x.IdMyEntity,
Display = x.Display,
CalculatedColumn = x.CalculatedColumn
}).WithConcurencyControl(OptimisticConcurrencyControlStrategy.None)
.WithCacheStrategy(CacheStrategy.Yes)
.ToTable(
"mytable"
);
configuration.HasProperty(x => x.IdMyEntity).ToColumn(
"idmyentity"
).WithDataAccessKind(DataAccessKind.ReadWrite).IsIdentity(KeyGenerator.Autoinc).IsNotNullable();
configuration.HasProperty(x => x.Display).ToColumn(
"display"
).WithDataAccessKind(DataAccessKind.ReadWrite).IsNullable();
configuration.HasProperty(x => x.CalculatedColumn).ToColumn(
"calculatedcolumn"
).WithDataAccessKind(DataAccessKind.ReadOnly).IsNullable();
If I use this Linq
List<MyEntity> list = this.MyDatabase.MyEntitys;
ORM run this SQL statement : SELECT a."idmyentity" COL1, a."display" COL2, a."calculatedcolumn" COL3 FROM "mytable" a;
And that's work.
But if I use this Linq
MyEntity oneEntity = this.MyDatabase.MyEntitys.Where(x => x.IdMyEntity == 1);
ORM run this SQL statement : SELECT "idmyentity", "display", "calculatedcolumn" FROM "mytable" WHERE "idmyentity" = :p0;
And I have an error because Postgresql must have table name in prefix of column.
Have you a solution to add table name (or alias) in each SQL statement ?
Thanks in advance