我的数据库的EF实体模型我正在使用C#和VS2010。该模型有一个名为tblPendingMessages
的实体,我用它来创建由我的SQL Server代理定期调度的消息。这很简单。
EF似乎已生成名为tblPendingMessages
的实体CreatetblPendingMessage
的方法。该方法看起来非常适合添加新的待处理消息,但其参数包括主键,即主标识列。通常情况下,我会使用null
,但Intellisense不允许,它需要int
...
我该怎么做?
-------编辑
我做了更多的研究。 EF似乎并不是很受欢迎,但由于我刚刚开始,它似乎与最新的波有意义。
无论如何,'CreatetblPendingMessage'方法是一个工厂方法,用于创建单个'tblPendingMessage'“row”实例。仍然必须将新的“行”添加到tblPendingMessages对象,然后保存更改。我找到了一些代码示例,这就是我最终做的事情(善良,我仍然是一个c#newby ....):
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;
}
答案 0 :(得分:0)
您可以将-1
或0
作为tblPendingMessages
实体的主键值传递(实体不会提交到数据库 - 它将在内存中创建)。您还可以创建自己更方便的方法,该方法将使用默认主键值,因为实体是在部分类中声明的:
public partial class tblPendingMessages
{
public static tblPendingMessages CreatetblPendingMessage(string foo, int bar)
{
return CreatetblPendingMessage(-1, foo, bar);
}
}