C# 将预定列表中的随机值分配给Autopoco中的种子对象
我正在使用Autopoco为一个项目生成测试/种子数据 每个会议对象在一年的时间跨度内被分配一个随机日期(DefaultRandomDateSource),我还希望会议对象从预定义列表(MeetingTitleSource)中被分配一个随机标题 我遇到的问题是,会议标题没有按随机时间顺序应用。Ie:前两周都是“表演会议”,接下来的两周都是“设计会议”等等。我希望会议标题完全随机分配 有人能帮忙吗 下面是我创建种子数据的代码C# 将预定列表中的随机值分配给Autopoco中的种子对象,c#,.net,autopoco,C#,.net,Autopoco,我正在使用Autopoco为一个项目生成测试/种子数据 每个会议对象在一年的时间跨度内被分配一个随机日期(DefaultRandomDateSource),我还希望会议对象从预定义列表(MeetingTitleSource)中被分配一个随机标题 我遇到的问题是,会议标题没有按随机时间顺序应用。Ie:前两周都是“表演会议”,接下来的两周都是“设计会议”等等。我希望会议标题完全随机分配 有人能帮忙吗 下面是我创建种子数据的代码 //Configure the default properties
//Configure the default properties
var meetings = AutoPocoContainer.Configure(x =>
{
x.Conventions(c => { c.UseDefaultConventions(); });
x.Include<Meeting>()
.Setup(c => c.StartDate).Use<DefaultRandomDateSource>
(DateTime.Parse("21/Mar/2013"),
DateTime.Parse("21/Mar/2012"))
.Setup(c => c.EndDate).Use<MeetingEndDateSource>(0, 8)
.Setup(c => c.Title).Use<MeetingTitleSource>()
});
_meetings = meetings.CreateSession().List<Meeting>(MeetingRecords).Get();
//配置默认属性
var meetings=autopoccontainer.Configure(x=>
{
x、 约定(c=>{c.UseDefaultConventions();});
x、 包括()
.Setup(c=>c.StartDate)。使用
(DateTime.Parse(“2013年3月21日”),
DateTime.Parse(“2012年3月21日”)
.Setup(c=>c.EndDate)。使用(0,8)
.Setup(c=>c.Title).Use()
});
_meetings=meetings.CreateSession().List(MeetingRecords.Get();
这是defaultdate的来源
public class DefaultRandomDateSource : DatasourceBase<DateTime>
{
private DateTime _MaxDate { get; set; }
private DateTime _MinDate { get; set; }
private Random _random = new Random(1337);
public DefaultRandomDateSource(DateTime MaxDate, DateTime MinDate)
{
_MaxDate = MaxDate;
_MinDate = MinDate;
}
public override DateTime Next(IGenerationContext context)
{
var tspan = _MaxDate - _MinDate;
var rndSpan = new TimeSpan(0, _random.Next(0, (int)tspan.TotalMinutes), 0);
return _MinDate + rndSpan;
}
}
public类DefaultRandomDateSource:DatasourceBase
{
私有日期时间_MaxDate{get;set;}
私有日期时间_MinDate{get;set;}
private Random _Random=新随机(1337);
public DefaultRandomDateSource(DateTime MaxDate、DateTime MinDate)
{
_MaxDate=MaxDate;
_MinDate=MinDate;
}
下一个公共覆盖日期时间(IGenerationContext)
{
var tspan=_MaxDate-_MinDate;
var rndSpan=新的时间跨度(0,_random.Next(0,(int)tspan.TotalMinutes),0);
返回_MinDate+rndSpan;
}
}
以下是会议标题来源
public class MeetingTitleSource : DatasourceBase<string>
{
private Random mRandom = new Random(1337);
public override string Next(IGenerationContext context)
{
return MeetingNames[mRandom.Next(0, MeetingNames.Length)];
}
private static string[] MeetingNames = new String[]{
"Design meeting",
"Strategy Meeting",
"Performance review",
"Appraisal",
"Disciplinary",
"Project review",
"Client Meetings",
"Budget Meeting",
"Financial Update",
"CompStat",
"Project Update"
};
}
public class MeetingTitleSource:DatasourceBase
{
私有随机mRandom=新随机(1337);
下一个公共重写字符串(IGenerationContext)
{
返回会议名称[mRandom.Next(0,MeetingNames.Length)];
}
私有静态字符串[]MeetingNames=新字符串[]{
“设计会议”,
“战略会议”,
“业绩审查”,
“评估”,
“纪律处分”,
“项目审查”,
“客户会议”,
“预算会议”,
“财务更新”,
“CompStat”,
“项目更新”
};
}
您使用的是相同的种子,因此每次都会生成相同的值序列
系统时钟的纳秒值通常用作种子,您可能想试试。为什么使用相同的种子值?正如
所述,为不同的随机对象提供相同的种子值会导致每个实例产生相同的随机数序列。
我怀疑这是种子,但我不知道如何在每次调用代码时生成新的种子值。我已经衡量了许多不同的东西。只是希望对autopoco的工作原理有一点了解,能为我指明正确的方向。是的,这就成功了,尽管我将它乘以100以获得足够的分辨率