我通常遵循的另一种方法是从 XML 文件加载种子数据。一个单独的类将包含以下内容:
private XmlNodeList readNodes(String xmlFilePath, String nodeName)
{
FileStream reader = new FileStream(xmlFilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
System.Xml.XmlDocument source = new System.Xml.XmlDocument();
source.Load(reader);
return source.GetElementsByTagName(nodeName);
}
public List<Band> readBands(String xmlFilePath)
{
List<Band> results = new List<Band>();
foreach (XmlNode node in readNodes(xmlFilePath, "Band"))
{
results.Add(new Band { Members = node.Attributes["members"].Value, Name = node.Attributes["name"].Value });
}
results.Sort();
return results;
}
然后将以下内容添加到您的Seed
方法中:
foreach (Band b in seeder.readBands(AppDomain.CurrentDomain.BaseDirectory + "App_Data\\Bands.xml"))
{
db.bands.Add(b);
}
然后,您的 XML 将看起来像这样,并位于您的 App_Data 目录下。
<?xml version="1.0" encoding="UTF-8"?>
<bands>
<band name="Bear vs Shark" members="4" />
<band name="Circa Survive" members="4" />
<band name="Damiera" members="3" />
</bands>
然后,您可以为每个要播种的表创建种子方法和 XML 文件。请记住,由于您正在使用Add
而不是在运行AddOrUpdate
时很可能会添加重复项Seed
。