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似乎不是很受欢迎,但因

我的数据库有一个EF实体模型,用于C和VS2010。该模型有一个名为tblPendingMessages的实体,我使用它创建SQL Server代理定期发送的消息。这很简单

EF似乎已生成名为CreatetblPendingMessage的实体tblPendingMessages的方法。该方法看起来非常适合添加新的挂起消息,但其参数包括主键(标识列)。通常,我会使用null,但Intellisense不允许,它需要一个int

我该怎么做

----编辑

我做了更多的研究。EF似乎不是很受欢迎,但因为我才刚刚开始,它似乎与最新的浪潮是有意义的

无论如何,“CreatetblPendingMessage”方法是一个工厂方法,用于创建单个“tblPendingMessage”行实例。该新行仍然必须添加到tblPendingMessages对象,然后保存更改。我找到了一些代码示例,下面是我最后做的事情,我还是个c新手

    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?您使用的代码生成机制是什么?它是模型的自定义工具属性。