108 lines
3.8 KiB
C#
108 lines
3.8 KiB
C#
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
using System;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using YLErp.DBModels;
|
|
|
|
namespace YLErp.Modules.EntityFrameworkTests
|
|
{
|
|
[TestClass]
|
|
public class EntityFrameworkTest : YLUnitTestBase
|
|
{
|
|
[TestMethod("测试NULL引用")]
|
|
public void TestNullMap()
|
|
{
|
|
using (var db = DbContextFactory.GetYLDbContext())
|
|
{
|
|
var query = from t in db.trade
|
|
join rr in db.realtime_trade_risk on t.id equals rr.TradeId into rrs
|
|
from rr in rrs.DefaultIfEmpty()
|
|
where t.id == 1
|
|
select new
|
|
{
|
|
t.id,
|
|
pv = rr.Pv
|
|
};
|
|
|
|
var data = query.FirstOrDefault();
|
|
|
|
Assert.AreEqual(data.pv, null);
|
|
}
|
|
}
|
|
|
|
[TestMethod("获取可为空的列如何查询优化")]
|
|
public void TestNullableDate()
|
|
{
|
|
var log1 = new StringBuilder(500);
|
|
var log2 = new StringBuilder(500);
|
|
var date = DateTime.Today.AddDays(-30);
|
|
var predicate = PredicateBuilder.Create<ExchangeListOption>(n => n.MaturityDate > date);
|
|
using (var db = DbContextFactory.GetYLDbContext())
|
|
{
|
|
db.Database.Log = log => log1.AppendLine(log);
|
|
var data = db.exchange_list_option.Where(predicate).FirstOrDefault();
|
|
}
|
|
|
|
predicate = PredicateBuilder.Create<ExchangeListOption>(n => n.MaturityDate > date);
|
|
using (var db = DbContextFactory.GetYLDbContext())
|
|
{
|
|
db.Database.Log = log => log2.AppendLine(log);
|
|
var data = db.exchange_list_option.Where(predicate).FirstOrDefault();
|
|
}
|
|
|
|
Assert.AreNotEqual(log1.ToString(), log2.ToString());
|
|
|
|
//这个测试说明了和date类型的列进行比较的时候不会产生null处理,但最好linq中还是要使用value
|
|
}
|
|
|
|
[TestMethod("测试AutoMapper.ProjectTo")]
|
|
public void TestAutoMapper()
|
|
{
|
|
|
|
}
|
|
|
|
[TestMethod("测试复杂对象是否被跟踪")]
|
|
public void TestDataProxy()
|
|
{
|
|
var query = from a in DbContext.valuedate
|
|
from b in DbContext.AppConfig
|
|
where a.id == 1 && b.PGroup == "ProjectConfig" && b.PName == "Erp.VolMode"
|
|
select new
|
|
{
|
|
a,
|
|
b = new AppConfigDto
|
|
{
|
|
PValue = b.PValue,
|
|
CreateTime = b.CreateTime
|
|
}
|
|
};
|
|
|
|
var item = query.FirstOrDefault();
|
|
|
|
var riskFreeRate = item.a.RiskFreeRate;
|
|
|
|
Assert.IsTrue(DbContext.Entry(item.a).State == System.Data.Entity.EntityState.Unchanged, "测试是否附加1");
|
|
|
|
item.a.RiskFreeRate = riskFreeRate + 1;
|
|
|
|
var state = DbContext.Entry(item.a).State;
|
|
|
|
Assert.IsTrue(state == System.Data.Entity.EntityState.Modified, "测试是否附加2");
|
|
|
|
var changes = DbContext.SaveChanges();
|
|
|
|
Assert.IsTrue(changes == 1, "测试是否附加3");
|
|
|
|
item.a.RiskFreeRate = riskFreeRate;
|
|
|
|
Assert.IsTrue(DbContext.Entry(item.a).State == System.Data.Entity.EntityState.Modified, "测试是否附加4");
|
|
|
|
changes = DbContext.SaveChanges();
|
|
|
|
Assert.IsTrue(changes == 1, "测试是否附加5");
|
|
|
|
//Assert.IsTrue(DbContext.Entry(item.b).State == System.Data.Entity.EntityState.Detached, "测试是否附加2");
|
|
}
|
|
}
|
|
}
|