I tried your EntityFramework-Mapper for Oracle and at a first look it works great!


I have some question:
Why are the facets not queryable if i use
Your DevartEfGenerator for the model?
*.edml


entities = new DevartDemo.DevartEntities();
depts = entities.Depts.ToList();
int? dmaxLength = GetMaxLength(new Dept(), "Dname", entities.Depts);
returns 0
EntityModelCodeGenerator on the same table works and i get the facets.
*.edmx
EntitiesTestModel mentities = new EntitiesTestModel();
List deptsm = mentities.DEPT.ToList();
int? mmaxLength = GetMaxLength(new DEPT(), "DNAME", mentities.DEPT);
returns 14


This I have found in the internet!



private int?
GetMaxLength(EntityObject entite, string nomPropriete, ObjectQuery query)
{
int? result = null;
using (var contexte = query.Context)
{
var q = from meta in contexte.MetadataWorkspace.GetItems(DataSpace.CSpace).Where(
m => m.BuiltInTypeKind == BuiltInTypeKind.EntityType)
from p in (meta as EntityType).Properties.Where(
p => p.DeclaringType.Name == entite.GetType().Name
&& p.Name == nomPropriete && p.TypeUsage.EdmType.Name == "String")
select p;
var queryResult = from meta in contexte.MetadataWorkspace.GetItems(DataSpace.CSpace).Where(
m => m.BuiltInTypeKind == BuiltInTypeKind.EntityType)
from p in (meta as EntityType).Properties.Where(
p => p.DeclaringType.Name == entite.GetType().Name
&& p.Name == nomPropriete && p.TypeUsage.EdmType.Name == "String")
select p.TypeUsage.Facets["MaxLength"].Value;
if (queryResult.Count() > 0)
{
result = Convert.ToInt32(queryResult.First());
}
}
return result;
}
Missed I something, or must I write a query to the database to get the facets.
Thanks
Roman