在实体框架6

时间:2015-07-30 16:38:06

标签: c# linq entity-framework

如何在实体框架6中调用标量函数? 我试过以下代码

        using (MhEntities DContext = new MhEntities())
        {
            var Account_IdParameter = Account_Id.HasValue ? new ObjectParameter("Account_Id", Account_Id) : new ObjectParameter("Account_Id", typeof(long));
            string res = ((IObjectContextAdapter)DContext).ObjectContext.CreateQuery<string>("MoneyforHealthEntities.Fn_LEVEL0_Acount_Id", Account_IdParameter).FirstOrDefault();
            return Convert.ToInt64(res);
        }

3 个答案:

答案 0 :(得分:7)

无需使用let self = require('sdk/self'); let { Cu } = require('chrome'); let { AddonManager } = Cu.import("resource://gre/modules/AddonManager.jsm"); let updateListener = { onUpdateAvailable: function onAddonUpdateEnded(aAddon, aInstall) { // An update is available console.log(aInstall.version); }, onNoUpdateAvailable: function onNoUpdateAvailable(aAddon) { // no update available }, onUpdateFinished: function onUpdateFinished() { // update of the addon has finished } }; AddonManager.getAddonByID(self.id, function(addon) { addon.findUpdates(updateListener, AddonManager.UPDATE_WHEN_USER_REQUESTED); }); 来执行此操作。另外,我认为你不能简单地传递函数的名称,你需要给它完整,有效的SQL。

所以我会尝试这样的事情:

ObjectContext

由于您没有提供有关您正在使用的数据库或确切函数定义的任何详细信息,因此上述内容可能需要进一步调整。但它至少应该给你基本的想法。

答案 1 :(得分:1)

所有答案正确,但是如果有人使用stored procedure,则需要在函数导入时通过以下方式对其进行编辑:
1.右键单击您的function,然后单击edit
2.在edit function Import窗口中。
3.在Scaler部分中选择returns a collection
4.最后,单击确定并保存您的模型。

在我的示例中,我调用一个返回字符串值的插入存储过程。

using (DbModel db = new DbModel())
 {
     string result = db.storedprocedureName(value1,value2).FirstOrDefault();
     return result;
 }

答案 2 :(得分:0)

DateTime ServerTime = new ContextDbEntities().Database.SqlQuery<DateTime>("Select getdate();").FirstOrDefault();
MessageBox.Show(ServerTime.ToString());