Shared/Kernelx.MO2EFCore/Cmpts/EFMOI/Core/EFCoreExtensions.cs
(开头部分) 4KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using Kernelx.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Reflection;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Kernelx.Contexts;
namespace Kernelx.Cmpts.EFMOI.Core
{
internal static class EFCoreExtensions
{
private static MethodInfo UseIdentityColumn;
static EFCoreExtensions()
{
//仅开发模式下去尝试
if (!ContextWorkload.HasCurrent() || (ContextWorkload.Current.GetRuntimeEnvironment() is ContextEnvironment env) && env.IsDevelopment)
{
//尝试加载SqlServer的UseIdentityColumn扩展方法
try
{
var ass = Assembly.Load(new AssemblyName("Microsoft.EntityFrameworkCore.SqlServer"));
UseIdentityColumn = ass.GetType("Microsoft.EntityFrameworkCore.SqlServerPropertyBuilderExtensions")
?.GetMethod("UseIdentityColumn", new[] { typeof(PropertyBuilder), typeof(int), typeof(int) });
}
catch { }
}
}
/// <summary>
/// 尝试反射查找UseIdentityColumn方法,找到后调用
/// </summary>
/// <param name="propertyBuilder"></param>
/// <param name="seed"></param>
/// <param name="increment"></param>
private static void TryUseIdentityColumn(PropertyBuilder propertyBuilder, int seed = 1, int increment = 1)
{
UseIdentityColumn?.Invoke(null,new object[] { propertyBuilder, seed, increment });
}
/// <summary>
/// 构建模型映射到存储库中的信息,(增加字段描述信息生成)
/// </summary>
/// <param name="modelBuilder"></param>
/// <param name="entityType"></param>
public static void BuilderModelMapping(this ModelBuilder modelBuilder, Type entityType)
{
//
var eb = modelBuilder.Entity(entityType);
var typeAtts = entityType.GetCustomAttributes(false);
var eName=(typeAtts.FirstOrDefault(x=>x is TableAttribute) as TableAttribute)?.Name??entityType.Name;
后面还有 44 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
