我正在使用CodeFirst方法开发mvc5应用程序。这是模态类
public class Feeder
{
[Key]
public int FeederId { get; set; }
public string FeederName { get; set; }
public string FeederCode { get; set; }
public DateTime StatusChangeDate { get; set; }
public int CreateBy { get; set; }
public DateTime CreatedDate { get; set; }
public int EditBy { get; set; }
public DateTime EditDate { get; set; }
}
这里适用于' FeederCode'我想生成一个字符串,为每个记录增量。字符串应该是这样的。
BMK15FEDR00001
这里' BMK'和' FEDR'是固定的。但是15(2015年的最后2位数)将根据年份而变化。由于这是2015年,它应该是15,并且对于明年的记录它是16&00; 00001'应该为每个记录增加00002,00003 ....
我搜索了这个,但无法想出正确的方法。所有帮助赞赏。谢谢!
答案 0 :(得分:2)
为什么不将它作为计算值?
您说BMK
和FEDR
是常量,您可以从CreatedDate
中提取年份,并且就最后一部分而言,您的FeederId
已设置为自动生成默认情况下,SQL正在为您做到这一点。
现在,您的计算值应保存为:
`“BMK”+ CreatedDate.ToString(“yy”)+“FEDR”+ FeederId;
这是您在FeederCode
值中保存的内容。
希望这就是你的意思。
如果您还希望每年的代码再次从1开始,则应设置复合主键,其他值为年份。你也可以重置身份值,你可以阅读here它是如何完成的(c部分)。
有关ID值的更新:
USE AdventureWorks2012;
GO
DBCC CHECKIDENT ('Person.AddressType', RESEED, 10);
GO
如所附链接所示:
以下示例强制将AddressType表中AddressTypeID列中的当前标识值强制为10.因为该表具有现有行,所以插入的下一行将使用11作为值,即新的当前增量为列值加1定义的值。
如果这对你不重要,我建议你避免它。如果它是你可以用它来满足你的需求。实现此目的的最佳方法是触发每年将重置自动标识符的SQL事件。