mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 04:18:16 +08:00
- 补充 Navigate(ManyToMany = typeof(中间表)) 多对多自定义配置;
This commit is contained in:
@ -0,0 +1,252 @@
|
||||
using FreeSql.DataAnnotations;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Numerics;
|
||||
using System.Threading;
|
||||
using Xunit;
|
||||
|
||||
namespace FreeSql.Tests.DataAnnotations
|
||||
{
|
||||
public class ManyToManyTest
|
||||
{
|
||||
Random rnd = new Random();
|
||||
|
||||
#region Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>
|
||||
[Fact]
|
||||
public void Select()
|
||||
{
|
||||
var users = new mtm_user[10];
|
||||
var roles = new mtm_role[10];
|
||||
var urs = new List<mtm_user_mtm_role>();
|
||||
for (var a = 0; a < users.Length; a++)
|
||||
{
|
||||
var uid = Guid.NewGuid();
|
||||
users[a] = new mtm_user
|
||||
{
|
||||
id = uid,
|
||||
username = "<22>û<EFBFBD>" + a + "_" + Guid.NewGuid().ToString("N"),
|
||||
createtime = DateTime.Now
|
||||
};
|
||||
}
|
||||
g.sqlite.Insert(users).ExecuteAffrows();
|
||||
for (var a = 0; a < roles.Length; a++)
|
||||
{
|
||||
var uid = Guid.NewGuid();
|
||||
roles[a] = new mtm_role
|
||||
{
|
||||
id = uid,
|
||||
name = "<22><>ɫ" + a + "_" + Guid.NewGuid().ToString("N"),
|
||||
createtime = DateTime.Now
|
||||
};
|
||||
}
|
||||
g.sqlite.Insert(roles).ExecuteAffrows();
|
||||
|
||||
for (var a = 0; a < users.Length; a++)
|
||||
{
|
||||
for (var b = roles.Length; b >= 0; b--)
|
||||
{
|
||||
var ur = new mtm_user_mtm_role
|
||||
{
|
||||
mtm_user_id = users[a].id,
|
||||
mtm_role_id = roles[rnd.Next(roles.Length)].id
|
||||
};
|
||||
if (urs.Where(c => c.mtm_role_id == ur.mtm_role_id && c.mtm_user_id == ur.mtm_user_id).Any() == false)
|
||||
urs.Add(ur);
|
||||
}
|
||||
}
|
||||
g.sqlite.Insert(urs.ToArray()).ExecuteAffrows();
|
||||
|
||||
var select1 = g.sqlite.Select<mtm_user>().Limit(10).OrderByDescending(a => a.createtime).ToList(true);
|
||||
|
||||
var select2 = g.sqlite.Select<mtm_user>().IncludeMany(a => a.mtm_roles).Limit(10).OrderByDescending(a => a.createtime).ToList(true);
|
||||
}
|
||||
|
||||
public class mtm_user
|
||||
{
|
||||
public Guid id { get; set; }
|
||||
public string username { get; set; }
|
||||
public DateTime createtime { get; set; }
|
||||
|
||||
public virtual List<mtm_role> mtm_roles { get; set; }
|
||||
}
|
||||
public class mtm_user_mtm_role
|
||||
{
|
||||
public Guid mtm_user_id { get; set; }
|
||||
public Guid mtm_role_id { get; set; }
|
||||
|
||||
public mtm_user mtm_user { get; set; }
|
||||
public mtm_role mtm_role { get; set; }
|
||||
}
|
||||
public class mtm_role
|
||||
{
|
||||
public Guid id { get; set; }
|
||||
|
||||
public string name { get; set; }
|
||||
public DateTime createtime { get; set; }
|
||||
|
||||
public virtual List<mtm_user> mtm_users { get; set; }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ࣬<EFBFBD>м<EFBFBD><EFBFBD><EFBFBD>ΪԼ<EFBFBD><EFBFBD>
|
||||
[Fact]
|
||||
public void Navigate1()
|
||||
{
|
||||
var users = new mtm_user_nav1[10];
|
||||
var roles = new mtm_role_nav1[10];
|
||||
var urs = new List<user_role_nav1>();
|
||||
for (var a = 0; a < users.Length; a++)
|
||||
{
|
||||
var uid = Guid.NewGuid();
|
||||
users[a] = new mtm_user_nav1
|
||||
{
|
||||
id = uid,
|
||||
username = "<22>û<EFBFBD>" + a + "_" + Guid.NewGuid().ToString("N"),
|
||||
createtime = DateTime.Now
|
||||
};
|
||||
}
|
||||
g.sqlite.Insert(users).ExecuteAffrows();
|
||||
for (var a = 0; a < roles.Length; a++)
|
||||
{
|
||||
var uid = Guid.NewGuid();
|
||||
roles[a] = new mtm_role_nav1
|
||||
{
|
||||
id = uid,
|
||||
name = "<22><>ɫ" + a + "_" + Guid.NewGuid().ToString("N"),
|
||||
createtime = DateTime.Now
|
||||
};
|
||||
}
|
||||
g.sqlite.Insert(roles).ExecuteAffrows();
|
||||
|
||||
for (var a = 0; a < users.Length; a++)
|
||||
{
|
||||
for (var b = roles.Length; b >= 0; b--)
|
||||
{
|
||||
var ur = new user_role_nav1
|
||||
{
|
||||
user_id = users[a].id,
|
||||
role_id = roles[rnd.Next(roles.Length)].id
|
||||
};
|
||||
if (urs.Where(c => c.role_id == ur.role_id && c.user_id == ur.user_id).Any() == false)
|
||||
urs.Add(ur);
|
||||
}
|
||||
}
|
||||
g.sqlite.Insert(urs.ToArray()).ExecuteAffrows();
|
||||
|
||||
var select1 = g.sqlite.Select<mtm_user_nav1>().Limit(10).OrderByDescending(a => a.createtime).ToList(true);
|
||||
|
||||
var select2 = g.sqlite.Select<mtm_user_nav1>().IncludeMany(a => a.roles).Limit(10).OrderByDescending(a => a.createtime).ToList(true);
|
||||
}
|
||||
|
||||
public class mtm_user_nav1
|
||||
{
|
||||
public Guid id { get; set; }
|
||||
public string username { get; set; }
|
||||
public DateTime createtime { get; set; }
|
||||
|
||||
[Navigate(ManyToMany = typeof(user_role_nav1))]
|
||||
public virtual List<mtm_role_nav1> roles { get; set; }
|
||||
}
|
||||
public class user_role_nav1
|
||||
{
|
||||
public Guid user_id { get; set; }
|
||||
public Guid role_id { get; set; }
|
||||
|
||||
public mtm_user_nav1 user { get; set; }
|
||||
public mtm_role_nav1 role { get; set; }
|
||||
}
|
||||
public class mtm_role_nav1
|
||||
{
|
||||
public Guid id { get; set; }
|
||||
|
||||
public string name { get; set; }
|
||||
public DateTime createtime { get; set; }
|
||||
|
||||
[Navigate(ManyToMany = typeof(user_role_nav1))]
|
||||
public virtual List<mtm_user_nav1> users { get; set; }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ࣬<EFBFBD>м<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>
|
||||
[Fact]
|
||||
public void Navigate()
|
||||
{
|
||||
var users = new mtm_user_nav[10];
|
||||
var roles = new mtm_role_nav[10];
|
||||
var urs = new List<user_role_nav>();
|
||||
for (var a = 0; a < users.Length; a++)
|
||||
{
|
||||
var uid = Guid.NewGuid();
|
||||
users[a] = new mtm_user_nav
|
||||
{
|
||||
id = uid,
|
||||
username = "<22>û<EFBFBD>" + a + "_" + Guid.NewGuid().ToString("N"),
|
||||
createtime = DateTime.Now
|
||||
};
|
||||
}
|
||||
g.sqlite.Insert(users).ExecuteAffrows();
|
||||
for (var a = 0; a < roles.Length; a++)
|
||||
{
|
||||
var uid = Guid.NewGuid();
|
||||
roles[a] = new mtm_role_nav
|
||||
{
|
||||
id = uid,
|
||||
name = "<22><>ɫ" + a + "_" + Guid.NewGuid().ToString("N"),
|
||||
createtime = DateTime.Now
|
||||
};
|
||||
}
|
||||
g.sqlite.Insert(roles).ExecuteAffrows();
|
||||
|
||||
for (var a = 0; a < users.Length; a++)
|
||||
{
|
||||
for (var b = roles.Length; b >= 0; b--)
|
||||
{
|
||||
var ur = new user_role_nav
|
||||
{
|
||||
user_pkid = users[a].id,
|
||||
role_pkid = roles[rnd.Next(roles.Length)].id
|
||||
};
|
||||
if (urs.Where(c => c.role_pkid == ur.role_pkid && c.user_pkid == ur.user_pkid).Any() == false)
|
||||
urs.Add(ur);
|
||||
}
|
||||
}
|
||||
g.sqlite.Insert(urs.ToArray()).ExecuteAffrows();
|
||||
|
||||
var select1 = g.sqlite.Select<mtm_user_nav>().Limit(10).OrderByDescending(a => a.createtime).ToList(true);
|
||||
|
||||
var select2 = g.sqlite.Select<mtm_user_nav>().IncludeMany(a => a.roles).Limit(10).OrderByDescending(a => a.createtime).ToList(true);
|
||||
}
|
||||
|
||||
public class mtm_user_nav
|
||||
{
|
||||
public Guid id { get; set; }
|
||||
public string username { get; set; }
|
||||
public DateTime createtime { get; set; }
|
||||
|
||||
[Navigate(ManyToMany = typeof(user_role_nav))]
|
||||
public virtual List<mtm_role_nav> roles { get; set; }
|
||||
}
|
||||
public class user_role_nav
|
||||
{
|
||||
public Guid user_pkid { get; set; }
|
||||
public Guid role_pkid { get; set; }
|
||||
|
||||
[Navigate("user_pkid")]
|
||||
public mtm_user_nav user { get; set; }
|
||||
[Navigate("role_pkid")]
|
||||
public mtm_role_nav role { get; set; }
|
||||
}
|
||||
public class mtm_role_nav
|
||||
{
|
||||
public Guid id { get; set; }
|
||||
|
||||
public string name { get; set; }
|
||||
public DateTime createtime { get; set; }
|
||||
|
||||
[Navigate(ManyToMany = typeof(user_role_nav))]
|
||||
public virtual List<mtm_user_nav> users { get; set; }
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -0,0 +1,141 @@
|
||||
using FreeSql.DataAnnotations;
|
||||
using System;
|
||||
using System.Numerics;
|
||||
using Xunit;
|
||||
|
||||
namespace FreeSql.Tests.DataAnnotations
|
||||
{
|
||||
public class ManyToOneTest
|
||||
{
|
||||
#region Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ
|
||||
[Fact]
|
||||
public void Select()
|
||||
{
|
||||
var users = new mto_user[10];
|
||||
var topics = new mto_topic[30];
|
||||
for (var a = 0; a < users.Length; a++)
|
||||
{
|
||||
var uid = Guid.NewGuid();
|
||||
users[a] = new mto_user
|
||||
{
|
||||
id = uid,
|
||||
username = Guid.NewGuid().ToString("N"),
|
||||
createtime = DateTime.Now
|
||||
};
|
||||
topics[a * 3] = new mto_topic
|
||||
{
|
||||
id = Guid.NewGuid(),
|
||||
userid = uid,
|
||||
title = "<22><><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>" + (a * 3) + Guid.NewGuid().ToString("N"),
|
||||
createtime = DateTime.Now
|
||||
};
|
||||
topics[a * 3 + 1] = new mto_topic
|
||||
{
|
||||
id = Guid.NewGuid(),
|
||||
userid = uid,
|
||||
title = "<22><><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>" + (a * 3 + 1) + Guid.NewGuid().ToString("N"),
|
||||
createtime = DateTime.Now
|
||||
};
|
||||
topics[a * 3 + 2] = new mto_topic
|
||||
{
|
||||
id = Guid.NewGuid(),
|
||||
userid = uid,
|
||||
title = "<22><><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>" + (a * 3 + 2) + Guid.NewGuid().ToString("N"),
|
||||
createtime = DateTime.Now
|
||||
};
|
||||
}
|
||||
g.sqlite.Insert(users).ExecuteAffrows();
|
||||
g.sqlite.Insert(topics).ExecuteAffrows();
|
||||
|
||||
var select1 = g.sqlite.Select<mto_topic>().Limit(30).OrderByDescending(a => a.createtime).ToList(true);
|
||||
|
||||
var select2 = g.sqlite.Select<mto_topic>().Include(a => a.user).Limit(30).OrderByDescending(a => a.createtime).ToList(true);
|
||||
|
||||
var firstct = users[0].createtime.AddSeconds(-1);
|
||||
var select3 = g.sqlite.Select<mto_topic>().Where(a => a.user.createtime > firstct).Limit(30).OrderByDescending(a => a.createtime).ToList(true);
|
||||
}
|
||||
|
||||
public class mto_user
|
||||
{
|
||||
public Guid id { get; set; }
|
||||
public string username { get; set; }
|
||||
public DateTime createtime { get; set; }
|
||||
}
|
||||
public class mto_topic
|
||||
{
|
||||
public Guid id { get; set; }
|
||||
public Guid userid { get; set; }
|
||||
public virtual mto_user user { get; set; }
|
||||
|
||||
public string title { get; set; }
|
||||
public DateTime createtime { get; set; }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ
|
||||
[Fact]
|
||||
public void Navigate()
|
||||
{
|
||||
var users = new mto_user_nav[10];
|
||||
var topics = new mto_topic_nav[30];
|
||||
for (var a = 0; a < users.Length; a++)
|
||||
{
|
||||
var uid = Guid.NewGuid();
|
||||
users[a] = new mto_user_nav
|
||||
{
|
||||
id = uid,
|
||||
username = Guid.NewGuid().ToString("N"),
|
||||
createtime = DateTime.Now
|
||||
};
|
||||
topics[a * 3] = new mto_topic_nav
|
||||
{
|
||||
id = Guid.NewGuid(),
|
||||
user_nav_pkid = uid,
|
||||
title = "<22><><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>" + (a * 3) + Guid.NewGuid().ToString("N"),
|
||||
createtime = DateTime.Now
|
||||
};
|
||||
topics[a * 3 + 1] = new mto_topic_nav
|
||||
{
|
||||
id = Guid.NewGuid(),
|
||||
user_nav_pkid = uid,
|
||||
title = "<22><><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>" + (a * 3 + 1) + Guid.NewGuid().ToString("N"),
|
||||
createtime = DateTime.Now
|
||||
};
|
||||
topics[a * 3 + 2] = new mto_topic_nav
|
||||
{
|
||||
id = Guid.NewGuid(),
|
||||
user_nav_pkid = uid,
|
||||
title = "<22><><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>" + (a * 3 + 2) + Guid.NewGuid().ToString("N"),
|
||||
createtime = DateTime.Now
|
||||
};
|
||||
}
|
||||
g.sqlite.Insert(users).ExecuteAffrows();
|
||||
g.sqlite.Insert(topics).ExecuteAffrows();
|
||||
|
||||
var select1 = g.sqlite.Select<mto_topic_nav>().Limit(30).OrderByDescending(a => a.createtime).ToList(true);
|
||||
|
||||
var select2 = g.sqlite.Select<mto_topic_nav>().Include(a => a.user).Limit(30).OrderByDescending(a => a.createtime).ToList(true);
|
||||
|
||||
var firstct = users[0].createtime.AddSeconds(-1);
|
||||
var select3 = g.sqlite.Select<mto_topic_nav>().Where(a => a.user.createtime > firstct).Limit(30).OrderByDescending(a => a.createtime).ToList(true);
|
||||
}
|
||||
|
||||
public class mto_user_nav
|
||||
{
|
||||
public Guid id { get; set; }
|
||||
public string username { get; set; }
|
||||
public DateTime createtime { get; set; }
|
||||
}
|
||||
public class mto_topic_nav
|
||||
{
|
||||
public Guid id { get; set; }
|
||||
public Guid user_nav_pkid { get; set; }
|
||||
[Navigate("user_nav_pkid")]
|
||||
public virtual mto_user_nav user { get; set; }
|
||||
|
||||
public string title { get; set; }
|
||||
public DateTime createtime { get; set; }
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -0,0 +1,138 @@
|
||||
using FreeSql.DataAnnotations;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Numerics;
|
||||
using Xunit;
|
||||
|
||||
namespace FreeSql.Tests.DataAnnotations
|
||||
{
|
||||
public class OneToManyTest
|
||||
{
|
||||
#region Լ<EFBFBD><EFBFBD>һ<EFBFBD>Զ<EFBFBD>
|
||||
[Fact]
|
||||
public void Select()
|
||||
{
|
||||
var users = new mto_user[10];
|
||||
var topics = new mto_topic[30];
|
||||
for (var a = 0; a < users.Length; a++)
|
||||
{
|
||||
var uid = Guid.NewGuid();
|
||||
users[a] = new mto_user
|
||||
{
|
||||
id = uid,
|
||||
username = Guid.NewGuid().ToString("N"),
|
||||
createtime = DateTime.Now
|
||||
};
|
||||
topics[a * 3] = new mto_topic
|
||||
{
|
||||
id = Guid.NewGuid(),
|
||||
mto_userid = uid,
|
||||
title = "<22><><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>" + (a * 3) + Guid.NewGuid().ToString("N"),
|
||||
createtime = DateTime.Now
|
||||
};
|
||||
topics[a * 3 + 1] = new mto_topic
|
||||
{
|
||||
id = Guid.NewGuid(),
|
||||
mto_userid = uid,
|
||||
title = "<22><><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>" + (a * 3 + 1) + Guid.NewGuid().ToString("N"),
|
||||
createtime = DateTime.Now
|
||||
};
|
||||
topics[a * 3 + 2] = new mto_topic
|
||||
{
|
||||
id = Guid.NewGuid(),
|
||||
mto_userid = uid,
|
||||
title = "<22><><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>" + (a * 3 + 2) + Guid.NewGuid().ToString("N"),
|
||||
createtime = DateTime.Now
|
||||
};
|
||||
}
|
||||
g.sqlite.Insert(users).ExecuteAffrows();
|
||||
g.sqlite.Insert(topics).ExecuteAffrows();
|
||||
|
||||
var select1 = g.sqlite.Select<mto_user>().Limit(10).OrderByDescending(a => a.createtime).ToList(true);
|
||||
|
||||
var select2 = g.sqlite.Select<mto_user>().IncludeMany(a => a.mto_topics).Limit(10).OrderByDescending(a => a.createtime).ToList(true);
|
||||
}
|
||||
|
||||
public class mto_user
|
||||
{
|
||||
public Guid id { get; set; }
|
||||
public string username { get; set; }
|
||||
public DateTime createtime { get; set; }
|
||||
|
||||
public virtual List<mto_topic> mto_topics { get; set; }
|
||||
}
|
||||
public class mto_topic
|
||||
{
|
||||
public Guid id { get; set; }
|
||||
public Guid mto_userid { get; set; }
|
||||
|
||||
public string title { get; set; }
|
||||
public DateTime createtime { get; set; }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>Զ<EFBFBD>
|
||||
[Fact]
|
||||
public void Navigate()
|
||||
{
|
||||
var users = new otm_user_nav[10];
|
||||
var topics = new otm_topic_nav[30];
|
||||
for (var a = 0; a < users.Length; a++)
|
||||
{
|
||||
var uid = Guid.NewGuid();
|
||||
users[a] = new otm_user_nav
|
||||
{
|
||||
id = uid,
|
||||
username = Guid.NewGuid().ToString("N"),
|
||||
createtime = DateTime.Now
|
||||
};
|
||||
topics[a * 3] = new otm_topic_nav
|
||||
{
|
||||
id = Guid.NewGuid(),
|
||||
user_nav_pkid = uid,
|
||||
title = "<22><><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>" + (a * 3) + Guid.NewGuid().ToString("N"),
|
||||
createtime = DateTime.Now
|
||||
};
|
||||
topics[a * 3 + 1] = new otm_topic_nav
|
||||
{
|
||||
id = Guid.NewGuid(),
|
||||
user_nav_pkid = uid,
|
||||
title = "<22><><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>" + (a * 3 + 1) + Guid.NewGuid().ToString("N"),
|
||||
createtime = DateTime.Now
|
||||
};
|
||||
topics[a * 3 + 2] = new otm_topic_nav
|
||||
{
|
||||
id = Guid.NewGuid(),
|
||||
user_nav_pkid = uid,
|
||||
title = "<22><><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>" + (a * 3 + 2) + Guid.NewGuid().ToString("N"),
|
||||
createtime = DateTime.Now
|
||||
};
|
||||
}
|
||||
g.sqlite.Insert(users).ExecuteAffrows();
|
||||
g.sqlite.Insert(topics).ExecuteAffrows();
|
||||
|
||||
var select1 = g.sqlite.Select<otm_user_nav>().Limit(10).OrderByDescending(a => a.createtime).ToList(true);
|
||||
|
||||
var select2 = g.sqlite.Select<otm_user_nav>().IncludeMany(a => a.topics).Limit(10).OrderByDescending(a => a.createtime).ToList(true);
|
||||
}
|
||||
|
||||
public class otm_user_nav
|
||||
{
|
||||
public Guid id { get; set; }
|
||||
public string username { get; set; }
|
||||
public DateTime createtime { get; set; }
|
||||
|
||||
[Navigate("user_nav_pkid")]
|
||||
public virtual List<otm_topic_nav> topics { get; set; }
|
||||
}
|
||||
public class otm_topic_nav
|
||||
{
|
||||
public Guid id { get; set; }
|
||||
public Guid user_nav_pkid { get; set; }
|
||||
|
||||
public string title { get; set; }
|
||||
public DateTime createtime { get; set; }
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
using FreeSql.DataAnnotations;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Numerics;
|
||||
using Xunit;
|
||||
|
||||
namespace FreeSql.Tests.DataAnnotations
|
||||
{
|
||||
public class OneToOneTest
|
||||
{
|
||||
[Fact]
|
||||
public void Select()
|
||||
{
|
||||
var users = new oto_user[10];
|
||||
for (var a = 0; a < users.Length; a++)
|
||||
{
|
||||
var uid = Guid.NewGuid();
|
||||
users[a] = new oto_user
|
||||
{
|
||||
id = uid,
|
||||
username = Guid.NewGuid().ToString("N"),
|
||||
createtime = DateTime.Now,
|
||||
ext = new oto_user_field
|
||||
{
|
||||
userid = uid,
|
||||
age = a,
|
||||
createtime = DateTime.Now
|
||||
}
|
||||
};
|
||||
}
|
||||
g.sqlite.Insert(users).ExecuteAffrows();
|
||||
g.sqlite.Insert(users.Select(a => a.ext).ToArray()).ExecuteAffrows();
|
||||
|
||||
var select1 = g.sqlite.Select<oto_user>().Include(a => a.ext).Limit(10).OrderByDescending(a => a.createtime).ToList(true);
|
||||
|
||||
var select2 = g.sqlite.Select<oto_user_field>().Limit(10).OrderByDescending(a => a.createtime).ToList(true);
|
||||
|
||||
var select3 = g.sqlite.Select<oto_user_field>().Include(a => a.user).Limit(10).OrderByDescending(a => a.createtime).ToList(true);
|
||||
}
|
||||
|
||||
public class oto_user
|
||||
{
|
||||
public Guid id { get; set; }
|
||||
public string username { get; set; }
|
||||
public DateTime createtime { get; set; }
|
||||
public oto_user_field ext { get; set; }
|
||||
}
|
||||
public class oto_user_field
|
||||
{
|
||||
[Column(IsPrimary = true)]
|
||||
public Guid userid { get; set; }
|
||||
public virtual oto_user user { get; set; }
|
||||
|
||||
public int age { get; set; }
|
||||
public DateTime createtime { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user