本文整理汇总了C#中IEntityType.HasClrType方法的典型用法代码示例。如果您正苦于以下问题:C# IEntityType.HasClrType方法的具体用法?C# IEntityType.HasClrType怎么用?C# IEntityType.HasClrType使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IEntityType
的用法示例。
在下文中一共展示了IEntityType.HasClrType方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CreateNewEntry
public virtual InternalEntityEntry CreateNewEntry(IEntityType entityType)
{
// TODO: Consider entities without parameterless constructor--use o/c mapping info?
// Issue #240
var entity = entityType.HasClrType() ? Activator.CreateInstance(entityType.ClrType) : null;
return _subscriber.SnapshotAndSubscribe(_factory.Create(this, entityType, entity), null);
}
示例2: CreateMaterializeExpression
public virtual Expression CreateMaterializeExpression(
IEntityType entityType,
Expression valueBufferExpression,
int[] indexMap = null)
{
// ReSharper disable once SuspiciousTypeConversion.Global
var materializer = entityType as IEntityMaterializer;
if (materializer != null)
{
return Expression.Call(
Expression.Constant(materializer),
((Func<ValueBuffer, object>)materializer.CreateEntity).GetMethodInfo(),
valueBufferExpression);
}
if (!entityType.HasClrType())
{
throw new InvalidOperationException(Strings.NoClrType(entityType.Name));
}
if (entityType.IsAbstract)
{
throw new InvalidOperationException(Strings.CannotMaterializeAbstractType(entityType));
}
var instanceVariable = Expression.Variable(entityType.ClrType, "instance");
var blockExpressions
= new List<Expression>
{
Expression.Assign(
instanceVariable,
Expression.New(entityType.ClrType.GetDeclaredConstructor(null)))
};
blockExpressions.AddRange(
from mapping in _memberMapper.MapPropertiesToMembers(entityType)
let propertyInfo = mapping.Item2 as PropertyInfo
let targetMember
= propertyInfo != null
? Expression.Property(instanceVariable, propertyInfo)
: Expression.Field(instanceVariable, (FieldInfo)mapping.Item2)
select
Expression.Assign(
targetMember,
CreateReadValueExpression(
valueBufferExpression,
targetMember.Type,
indexMap?[mapping.Item1.Index] ?? mapping.Item1.Index)));
blockExpressions.Add(instanceVariable);
return Expression.Block(new[] { instanceVariable }, blockExpressions);
}
示例3: NewInternalEntityEntry
private InternalEntityEntry NewInternalEntityEntry(IStateManager stateManager, IEntityType entityType, object entity, IValueReader valueReader)
{
if (!entityType.HasClrType())
{
return new InternalShadowEntityEntry(stateManager, entityType, _metadataServices, valueReader);
}
return entityType.ShadowPropertyCount() > 0
? (InternalEntityEntry)new InternalMixedEntityEntry(stateManager, entityType, _metadataServices, entity, valueReader)
: new InternalClrEntityEntry(stateManager, entityType, _metadataServices, entity);
}
示例4: NewInternalEntityEntry
private InternalEntityEntry NewInternalEntityEntry(IStateManager stateManager, IEntityType entityType, object entity)
{
if (!entityType.HasClrType())
{
return new InternalShadowEntityEntry(stateManager, entityType, _metadataServices);
}
Debug.Assert(entity != null);
return entityType.ShadowPropertyCount() > 0
? (InternalEntityEntry)new InternalMixedEntityEntry(stateManager, entityType, _metadataServices, entity)
: new InternalClrEntityEntry(stateManager, entityType, _metadataServices, entity);
}
示例5: NewInternalEntityEntry
private static InternalEntityEntry NewInternalEntityEntry(
IStateManager stateManager,
IEntityType entityType,
object entity,
ValueBuffer valueBuffer)
{
if (!entityType.HasClrType())
{
return new InternalShadowEntityEntry(stateManager, entityType, valueBuffer);
}
return entityType.ShadowPropertyCount() > 0
? (InternalEntityEntry)new InternalMixedEntityEntry(stateManager, entityType, entity, valueBuffer)
: new InternalClrEntityEntry(stateManager, entityType, entity);
}