mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 02:32:50 +08:00
codefirst 根据代码注释,迁移到数据库备注
This commit is contained in:
parent
38d51a809d
commit
5ce51bc310
@ -6,6 +6,10 @@
|
|||||||
<IsPackable>false</IsPackable>
|
<IsPackable>false</IsPackable>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||||
|
<DocumentationFile>FreeSql.Tests.xml</DocumentationFile>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="FreeSql.DbContext" Version="0.6.4.1" />
|
<PackageReference Include="FreeSql.DbContext" Version="0.6.4.1" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.1.8" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.1.8" />
|
||||||
|
198
FreeSql.Tests/FreeSql.Tests.xml
Normal file
198
FreeSql.Tests/FreeSql.Tests.xml
Normal file
@ -0,0 +1,198 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<doc>
|
||||||
|
<assembly>
|
||||||
|
<name>FreeSql.Tests</name>
|
||||||
|
</assembly>
|
||||||
|
<members>
|
||||||
|
<member name="M:FreeSql.Tests.MySql.MySqlCodeFirstTest.Tb_alltype.Save">
|
||||||
|
<summary>
|
||||||
|
保存或添加,如果主键有值则尝试 Update,如果影响的行为 0 则尝试 Insert
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:FreeSql.Tests.UnitTest1.NewsArticle">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.ArticleId">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.ArticleTitle">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.CategoryId">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.ChannelId">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.TypeId">
|
||||||
|
<summary>
|
||||||
|
类型
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.Summary">
|
||||||
|
<summary>
|
||||||
|
内容简介
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.Thumbnail">
|
||||||
|
<summary>
|
||||||
|
缩略图
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.Hits">
|
||||||
|
<summary>
|
||||||
|
点击量
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.IsDisplay">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.Status">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.CreateTime">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.ReleaseTime">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.Templates.Id">
|
||||||
|
<summary>
|
||||||
|
主键,ID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:FreeSql.Tests.ExamPaper">
|
||||||
|
<summary>
|
||||||
|
试卷表
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.ExamPaper.AssessmentPlanId">
|
||||||
|
<summary>
|
||||||
|
考核计划ID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.ExamPaper.TotalScore">
|
||||||
|
<summary>
|
||||||
|
总分
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModulePermission.SysModulePermissionId">
|
||||||
|
<summary>
|
||||||
|
菜单权限ID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModulePermission.SysModuleId">
|
||||||
|
<summary>
|
||||||
|
菜单主键ID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModulePermission.SysModuleButtonId">
|
||||||
|
<summary>
|
||||||
|
按钮主键ID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModulePermission.Status">
|
||||||
|
<summary>
|
||||||
|
菜单权限
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModule.SysModuleId">
|
||||||
|
<summary>
|
||||||
|
主键
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModule.ParentId">
|
||||||
|
<summary>
|
||||||
|
父级ID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModule.Name">
|
||||||
|
<summary>
|
||||||
|
名称
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModule.Icon">
|
||||||
|
<summary>
|
||||||
|
图标
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModule.UrlAddress">
|
||||||
|
<summary>
|
||||||
|
链接地址
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModule.IsShow">
|
||||||
|
<summary>
|
||||||
|
是否公开
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModule.Sort">
|
||||||
|
<summary>
|
||||||
|
排序
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModule.Description">
|
||||||
|
<summary>
|
||||||
|
备注
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModule.CreateTime">
|
||||||
|
<summary>
|
||||||
|
创建日期
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModuleButton.SysModuleButtonId">
|
||||||
|
<summary>
|
||||||
|
按钮主键
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModuleButton.Name">
|
||||||
|
<summary>
|
||||||
|
名称
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModuleButton.EventName">
|
||||||
|
<summary>
|
||||||
|
事件名称
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModuleButton.EnCode">
|
||||||
|
<summary>
|
||||||
|
编码
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModuleButton.Icon">
|
||||||
|
<summary>
|
||||||
|
图标
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModuleButton.Sort">
|
||||||
|
<summary>
|
||||||
|
排序
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModuleButton.CreateTime">
|
||||||
|
<summary>
|
||||||
|
创建日期
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
</members>
|
||||||
|
</doc>
|
@ -231,6 +231,9 @@ namespace FreeSql.Tests {
|
|||||||
public virtual TaskBuild TaskBuild { get; set; }
|
public virtual TaskBuild TaskBuild { get; set; }
|
||||||
}
|
}
|
||||||
public class Templates {
|
public class Templates {
|
||||||
|
/// <summary>
|
||||||
|
/// 主键,ID
|
||||||
|
/// </summary>
|
||||||
[Column(IsPrimary = true)]
|
[Column(IsPrimary = true)]
|
||||||
public Guid Id { get; set; }
|
public Guid Id { get; set; }
|
||||||
public string Title { get; set; }
|
public string Title { get; set; }
|
||||||
@ -267,6 +270,10 @@ namespace FreeSql.Tests {
|
|||||||
[Fact]
|
[Fact]
|
||||||
public void Test1() {
|
public void Test1() {
|
||||||
|
|
||||||
|
var dkdkdkd = g.mysql.Select<Templates>().ToList();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var testaddlist = new List<NewsArticle>();
|
var testaddlist = new List<NewsArticle>();
|
||||||
for(var a = 0; a < 133905; a++) {
|
for(var a = 0; a < 133905; a++) {
|
||||||
testaddlist.Add(new NewsArticle {
|
testaddlist.Add(new NewsArticle {
|
||||||
|
198
FreeSql.Tests/ftTests.xml
Normal file
198
FreeSql.Tests/ftTests.xml
Normal file
@ -0,0 +1,198 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<doc>
|
||||||
|
<assembly>
|
||||||
|
<name>FreeSql.Tests</name>
|
||||||
|
</assembly>
|
||||||
|
<members>
|
||||||
|
<member name="M:FreeSql.Tests.MySql.MySqlCodeFirstTest.Tb_alltype.Save">
|
||||||
|
<summary>
|
||||||
|
保存或添加,如果主键有值则尝试 Update,如果影响的行为 0 则尝试 Insert
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:FreeSql.Tests.UnitTest1.NewsArticle">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.ArticleId">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.ArticleTitle">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.CategoryId">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.ChannelId">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.TypeId">
|
||||||
|
<summary>
|
||||||
|
类型
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.Summary">
|
||||||
|
<summary>
|
||||||
|
内容简介
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.Thumbnail">
|
||||||
|
<summary>
|
||||||
|
缩略图
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.Hits">
|
||||||
|
<summary>
|
||||||
|
点击量
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.IsDisplay">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.Status">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.CreateTime">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.NewsArticle.ReleaseTime">
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest1.Templates.Id">
|
||||||
|
<summary>
|
||||||
|
主键,ID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:FreeSql.Tests.ExamPaper">
|
||||||
|
<summary>
|
||||||
|
试卷表
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.ExamPaper.AssessmentPlanId">
|
||||||
|
<summary>
|
||||||
|
考核计划ID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.ExamPaper.TotalScore">
|
||||||
|
<summary>
|
||||||
|
总分
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModulePermission.SysModulePermissionId">
|
||||||
|
<summary>
|
||||||
|
菜单权限ID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModulePermission.SysModuleId">
|
||||||
|
<summary>
|
||||||
|
菜单主键ID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModulePermission.SysModuleButtonId">
|
||||||
|
<summary>
|
||||||
|
按钮主键ID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModulePermission.Status">
|
||||||
|
<summary>
|
||||||
|
菜单权限
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModule.SysModuleId">
|
||||||
|
<summary>
|
||||||
|
主键
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModule.ParentId">
|
||||||
|
<summary>
|
||||||
|
父级ID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModule.Name">
|
||||||
|
<summary>
|
||||||
|
名称
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModule.Icon">
|
||||||
|
<summary>
|
||||||
|
图标
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModule.UrlAddress">
|
||||||
|
<summary>
|
||||||
|
链接地址
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModule.IsShow">
|
||||||
|
<summary>
|
||||||
|
是否公开
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModule.Sort">
|
||||||
|
<summary>
|
||||||
|
排序
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModule.Description">
|
||||||
|
<summary>
|
||||||
|
备注
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModule.CreateTime">
|
||||||
|
<summary>
|
||||||
|
创建日期
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModuleButton.SysModuleButtonId">
|
||||||
|
<summary>
|
||||||
|
按钮主键
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModuleButton.Name">
|
||||||
|
<summary>
|
||||||
|
名称
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModuleButton.EventName">
|
||||||
|
<summary>
|
||||||
|
事件名称
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModuleButton.EnCode">
|
||||||
|
<summary>
|
||||||
|
编码
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModuleButton.Icon">
|
||||||
|
<summary>
|
||||||
|
图标
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModuleButton.Sort">
|
||||||
|
<summary>
|
||||||
|
排序
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:FreeSql.Tests.UnitTest2.SysModuleButton.CreateTime">
|
||||||
|
<summary>
|
||||||
|
创建日期
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
</members>
|
||||||
|
</doc>
|
@ -2270,6 +2270,13 @@
|
|||||||
<param name="database"></param>
|
<param name="database"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:FreeSql.Internal.CommonUtils.GetProperyCommentBySummary(System.Type)">
|
||||||
|
<summary>
|
||||||
|
通过属性的注释文本,通过 xml 读取
|
||||||
|
</summary>
|
||||||
|
<param name="type"></param>
|
||||||
|
<returns>Dict:key=属性名,value=注释</returns>
|
||||||
|
</member>
|
||||||
<member name="P:FreeSql.Internal.Model.TableRef.RefMiddleEntityType">
|
<member name="P:FreeSql.Internal.Model.TableRef.RefMiddleEntityType">
|
||||||
<summary>
|
<summary>
|
||||||
中间表,多对多
|
中间表,多对多
|
||||||
|
@ -8,11 +8,14 @@ using System.Collections;
|
|||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data.Common;
|
using System.Data.Common;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using System.Xml;
|
||||||
|
using System.Xml.XPath;
|
||||||
|
|
||||||
namespace FreeSql.Internal {
|
namespace FreeSql.Internal {
|
||||||
public abstract class CommonUtils {
|
public abstract class CommonUtils {
|
||||||
@ -239,6 +242,36 @@ namespace FreeSql.Internal {
|
|||||||
return iidx == 1 ? sb.Remove(0, 5).Remove(sb.Length - 1, 1).ToString() : sb.Remove(0, 4).ToString();
|
return iidx == 1 ? sb.Remove(0, 5).Remove(sb.Length - 1, 1).ToString() : sb.Remove(0, 4).ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 通过属性的注释文本,通过 xml 读取
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="type"></param>
|
||||||
|
/// <returns>Dict:key=属性名,value=注释</returns>
|
||||||
|
public static Dictionary<string, string> GetProperyCommentBySummary(Type type) {
|
||||||
|
var xmlPath = type.Assembly.Location.Replace(".dll", ".xml");
|
||||||
|
if (File.Exists(xmlPath) == false) return null;
|
||||||
|
|
||||||
|
var dic = new Dictionary<string, string>();
|
||||||
|
var className = type.IsNested ? $"{type.Namespace}.{type.DeclaringType.Name}.{type.Name}" : $"{type.Namespace}.{type.Name}";
|
||||||
|
var sReader = new StringReader(File.ReadAllText(xmlPath));
|
||||||
|
using (var xmlReader = XmlReader.Create(sReader)) {
|
||||||
|
var xpath = new XPathDocument(xmlReader);
|
||||||
|
var xmlNav = xpath.CreateNavigator();
|
||||||
|
|
||||||
|
var props = type.GetProperties();
|
||||||
|
foreach (var prop in props) {
|
||||||
|
var node = xmlNav.SelectSingleNode($"/doc/members/member[@name='P:{className}.{prop.Name}']/summary");
|
||||||
|
if (node == null) continue;
|
||||||
|
var comment = node.InnerXml.Trim(' ', '\r', '\n', '\t');
|
||||||
|
if (string.IsNullOrEmpty(comment)) continue;
|
||||||
|
|
||||||
|
dic.Add(prop.Name, comment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return dic;
|
||||||
|
}
|
||||||
|
|
||||||
public static void PrevReheatConnectionPool(ObjectPool<DbConnection> pool, int minPoolSize) {
|
public static void PrevReheatConnectionPool(ObjectPool<DbConnection> pool, int minPoolSize) {
|
||||||
if (minPoolSize <= 0) minPoolSize = Math.Min(5, pool.Policy.PoolSize);
|
if (minPoolSize <= 0) minPoolSize = Math.Min(5, pool.Policy.PoolSize);
|
||||||
if (minPoolSize > pool.Policy.PoolSize) minPoolSize = pool.Policy.PoolSize;
|
if (minPoolSize > pool.Policy.PoolSize) minPoolSize = pool.Policy.PoolSize;
|
||||||
|
@ -10,6 +10,7 @@ namespace FreeSql.Internal.Model {
|
|||||||
public string CsName { get; set; }
|
public string CsName { get; set; }
|
||||||
public Type CsType { get; set; }
|
public Type CsType { get; set; }
|
||||||
public ColumnAttribute Attribute { get; set; }
|
public ColumnAttribute Attribute { get; set; }
|
||||||
|
public string Comment { get; internal set; }
|
||||||
|
|
||||||
static ConcurrentDictionary<ColumnInfo, Func<object, object>> _dicGetMapValue = new ConcurrentDictionary<ColumnInfo, Func<object, object>>();
|
static ConcurrentDictionary<ColumnInfo, Func<object, object>> _dicGetMapValue = new ConcurrentDictionary<ColumnInfo, Func<object, object>>();
|
||||||
public object GetMapValue(object obj) {
|
public object GetMapValue(object obj) {
|
||||||
|
@ -56,6 +56,7 @@ namespace FreeSql.Internal {
|
|||||||
if (tbattr != null) trytb.DisableSyncStructure = tbattr.DisableSyncStructure;
|
if (tbattr != null) trytb.DisableSyncStructure = tbattr.DisableSyncStructure;
|
||||||
var propsLazy = new List<(PropertyInfo, bool, bool)>();
|
var propsLazy = new List<(PropertyInfo, bool, bool)>();
|
||||||
var propsNavObjs = new List<PropertyInfo>();
|
var propsNavObjs = new List<PropertyInfo>();
|
||||||
|
var propsComment = CommonUtils.GetProperyCommentBySummary(entity);
|
||||||
foreach (var p in trytb.Properties.Values) {
|
foreach (var p in trytb.Properties.Values) {
|
||||||
var setMethod = trytb.Type.GetMethod($"set_{p.Name}");
|
var setMethod = trytb.Type.GetMethod($"set_{p.Name}");
|
||||||
var colattr = common.GetEntityColumnAttribute(entity, p);
|
var colattr = common.GetEntityColumnAttribute(entity, p);
|
||||||
@ -124,6 +125,8 @@ namespace FreeSql.Internal {
|
|||||||
CsType = p.PropertyType,
|
CsType = p.PropertyType,
|
||||||
Attribute = colattr
|
Attribute = colattr
|
||||||
};
|
};
|
||||||
|
if (propsComment != null && propsComment.TryGetValue(p.Name, out var trycomment))
|
||||||
|
col.Comment = trycomment;
|
||||||
if (colattr.IsIgnore) {
|
if (colattr.IsIgnore) {
|
||||||
trytb.ColumnsByCsIgnore.Add(p.Name, col);
|
trytb.ColumnsByCsIgnore.Add(p.Name, col);
|
||||||
continue;
|
continue;
|
||||||
|
@ -119,6 +119,7 @@ namespace FreeSql.MySql {
|
|||||||
sb.Append(" \r\n ").Append(_commonUtils.QuoteSqlName(tbcol.Attribute.Name)).Append(" ");
|
sb.Append(" \r\n ").Append(_commonUtils.QuoteSqlName(tbcol.Attribute.Name)).Append(" ");
|
||||||
sb.Append(tbcol.Attribute.DbType);
|
sb.Append(tbcol.Attribute.DbType);
|
||||||
if (tbcol.Attribute.IsIdentity == true && tbcol.Attribute.DbType.IndexOf("AUTO_INCREMENT", StringComparison.CurrentCultureIgnoreCase) == -1) sb.Append(" AUTO_INCREMENT");
|
if (tbcol.Attribute.IsIdentity == true && tbcol.Attribute.DbType.IndexOf("AUTO_INCREMENT", StringComparison.CurrentCultureIgnoreCase) == -1) sb.Append(" AUTO_INCREMENT");
|
||||||
|
if (string.IsNullOrEmpty(tbcol.Comment) == false) sb.Append(" COMMENT ").Append(_commonUtils.FormatSql("{0}", tbcol.Comment));
|
||||||
sb.Append(",");
|
sb.Append(",");
|
||||||
}
|
}
|
||||||
if (tb.Primarys.Any()) {
|
if (tb.Primarys.Any()) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user