C# 使用生成的方法
我的数据库有一个EF实体模型,用于C和VS2010。该模型有一个名为tblPendingMessages的实体,我使用它创建SQL Server代理定期发送的消息。这很简单 EF似乎已生成名为CreatetblPendingMessage的实体tblPendingMessages的方法。该方法看起来非常适合添加新的挂起消息,但其参数包括主键(标识列)。通常,我会使用null,但Intellisense不允许,它需要一个int 我该怎么做 ----编辑 我做了更多的研究。EF似乎不是很受欢迎,但因为我才刚刚开始,它似乎与最新的浪潮是有意义的 无论如何,“CreatetblPendingMessage”方法是一个工厂方法,用于创建单个“tblPendingMessage”行实例。该新行仍然必须添加到tblPendingMessages对象,然后保存更改。我找到了一些代码示例,下面是我最后做的事情,我还是个c新手C# 使用生成的方法,c#,entity-framework,entity-framework-4,C#,Entity Framework,Entity Framework 4,我的数据库有一个EF实体模型,用于C和VS2010。该模型有一个名为tblPendingMessages的实体,我使用它创建SQL Server代理定期发送的消息。这很简单 EF似乎已生成名为CreatetblPendingMessage的实体tblPendingMessages的方法。该方法看起来非常适合添加新的挂起消息,但其参数包括主键(标识列)。通常,我会使用null,但Intellisense不允许,它需要一个int 我该怎么做 ----编辑 我做了更多的研究。EF似乎不是很受欢迎,但因
private void NotifyWorkbookError(List<string> MsgLst)
{
string msgs = string.Join(@"<br />",MsgLst.Select(i=>i.ToArray()));
string finalHTML = GetHTML(3).Replace("#WBMessage#",msgs);
using (CPASEntities ctx=new CPASEntities())
{
tblPendingMessage m = new tblPendingMessage
{
Recipient=@"jamesshaffer@n.com",
MessageBody=finalHTML,
MessageGenerated=DateTime.Now,
MessageFormat="HTML",
MessageCC=@"CPAS_TIMESHEET_AUDITOR@N.COM"
};
ctx.tblPendingMessages.AddObject(m);
ctx.SaveChanges();
}
}
private string GetHTML(int MessageID)
{
string htMsg;
using (CPASEntities ctx = new CPASEntities())
{
tblHTML h = (from ht in ctx.tblHTMLs
where ht.HTMLID == MessageID
select ht).FirstOrDefault();
htMsg = h.HTMLCode;
}
htMsg = htMsg.Replace("#ID#", TimesheetID.ToString());
htMsg = htMsg.Replace("#VendorName#", VendorFullName);
htMsg = htMsg.Replace("#WeekStart#", WeekStartDate.ToShortDateString());
htMsg = htMsg.Replace("#SubmittedBy#", Creator);
htMsg = htMsg.Replace("#SubmittedOnDate#", DateTime.Parse(CreateDate).ToShortDateString());
htMsg = htMsg.Replace("#ModifiedBy#", Modifier);
htMsg = htMsg.Replace("#ModifiedOnDate#", DateTime.Parse(ModDate).ToShortDateString());
htMsg = htMsg.Replace("#WorkbookStatus#", CurrentStatus);
htMsg = htMsg.Replace("#NewWorkbookStatus#", CurrentStatus);
htMsg = htMsg.Replace("#AbsoluteURL#", link);
return htMsg;
}
您可以传递-1或0作为tblPendingMessages的主键值。实体将不会提交到数据库中,它将在内存中创建。此外,您还可以创建自己更方便的方法,该方法将使用默认主键值,因为实体是在分部类中声明的:
public partial class tblPendingMessages
{
public static tblPendingMessages CreatetblPendingMessage(string foo, int bar)
{
return CreatetblPendingMessage(-1, foo, bar);
}
}
请编写代码,以便我们可以看到,我可以想象,如果知道DB稍后将覆盖它,您就不能设置该变量,或者输入任何您想要的内容。主键的StoreGeneratedPattern属性是否设置为Identity?您使用的代码生成机制是什么?它是模型的自定义工具属性。