Sitefinity。 System.Data.SqlClient.SqlException:无效的列名“国家”。无法准备陈述

我使用代码在https://www.progress.com/documentation/sitefinity-cms/for-developers-create-custom-fields-for-subscribers

中的站点限制流中在Subcriber中创建新的自定义列

这是第一种方法。

public void CreateCustomFieldForSubscribers()
        { 
            var metadataManager = MetadataManager.GetManager();
            var dynamicType = metadataManager.GetMetaType(typeof(Subscriber));
            if (dynamicType == null)
                dynamicType = metadataManager.CreateMetaType(typeof(Subscriber));

            // Create a field for Title in the database
            var metaField = metadataManager.CreateMetafield("Title");
            metaField.DBSqlType = "NVARCHAR(100)";
            metaField.DBType = "LONGVARCHAR";
            metaField.ClrType = typeof(string).FullName;
            dynamicType.Fields.Add(metaField);

            // Create a field for Country in the database
            var metaField2 = metadataManager.CreateMetafield("Country");
            metaField2.DBSqlType = "NVARCHAR(100)";
            metaField2.DBType = "LONGVARCHAR";
            metaField2.ClrType = typeof(string).FullName;
            dynamicType.Fields.Add(metaField2);

            metadataManager.SaveChanges();
        }

这是第二种方法

public void FillOutCustomFieldForSubscribers()
        {
            NewslettersManager newslettersMamager = NewslettersManager.GetManager();

            // Get the mailing list you need *
            MailingList mailingList = newslettersMamager.GetMailingLists().FirstOrDefault();

            if (mailingList != null)
            {
                // Get all subscribers (or the subscriber you need **)
                var subscribers = newslettersMamager.GetSubscribers().ToList();
                for (int i = 0; i < subscribers.Count(); i++)
                {
                    subscribers[i].Setvalue("Title","Mr.");
                    subscribers[i].Setvalue("Country","BG");

                    // Save the changes
                    newslettersMamager.SaveChanges();
                }
            }
        }

我给他们打电话。

CreateCustomFieldForSubscribers();
FillOutCustomFieldForSubscribers();

但是当我运行第二种方法(FillOutCustomFieldForSubscribers)时:

public static void FillOutCustomFieldForSubscribers()
        {
            NewslettersManager newslettersMamager = NewslettersManager.GetManager();

            // Get the mailing list you need *
            MailingList mailingList = newslettersMamager.GetMailingLists().FirstOrDefault();

            if (mailingList != null)
            {
                // Get all subscribers (or the subscriber you need **)


                 this code happen error => var subscribers = newslettersMamager.GetSubscribers().ToList();

                for (int i = 0; i < subscribers.Count(); i++)
                {
                    subscribers[i].Setvalue("Title","BG");

                    // Save the changes
                    newslettersMamager.SaveChanges();
                }
            }
        }

错误:

  

无效的列名“ title”。无法准备声明。 ->   System.Data.SqlClient.SqlException:无效的列名“国家”。   无效的列名“ title”。无法准备声明……

我可以通过进入数据库并插入2列国家/地区和标题来解决此问题。但我认为这不是一个好主意。请给我一些建议!谢谢

leekikong1986 回答:Sitefinity。 System.Data.SqlClient.SqlException:无效的列名“国家”。无法准备陈述

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3031229.html

大家都在问