从山证v2.3.0拷贝
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
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");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user