圆形底座 class

Circular base class

我收到以下错误,我已粘贴代码和连接字符串。我是第一次使用PetaPoco

Circular base class dependency involving 'PetaPoco.DatabaseConfiguration' and 'PetaPoco.DatabaseConfiguration.IBuildConfigurationSettings'  

以下是连接字符串:

 <add name="PriceCheckString" connectionString="Data Source=.;Initial     Catalog=PriceCheck;Integrated Security=SSPI;"
     providerName="System.Data.SqlClient"/>

以下是代码行

      Database priceCheck = new Database("PriceCheckString");
      var ItemPrice = priceCheck.Query<ItemPrice>("SELECT * FROM itemPrice");

我遇到了同样的问题并且能够解决。您必须将接口声明移到 DatabaseConfiguration class.

之外

在 PetaPoco.cs 中,将您的 DatabaseConfiguration class 声明替换为以下代码:

public interface IBuildConfigurationSettings
{
    /// <summary>
    ///     Sets the setting against the specified key.
    /// </summary>
    /// <param name="key">The setting's key.</param>
    /// <param name="value">The setting's value.</param>
    void SetSetting(string key, object value);

    /// <summary>
    ///     Tries to get the setting and calls the <paramref name="setSetting" /> to set the value if found.
    /// </summary>
    /// <typeparam name="T">The setting type.</typeparam>
    /// <param name="key">The setting's key.</param>
    /// <param name="setSetting">The set setting callback.</param>
    /// <param name="onFail">The on fail callback, called when no setting can be set.</param>
    void TryGetSetting<T>(string key, Action<T> setSetting, Action onFail = null);
}

/// <summary>
///     A helper class which enables fluent configuration.
/// </summary>
public class DatabaseConfiguration : IDatabaseBuildConfiguration, IBuildConfigurationSettings, IHideObjectMethods
{
    private readonly IDictionary<string, object> _settings = new Dictionary<string, object>();

    /// <summary>
    ///     Private constructor to force usage of static build method.
    /// </summary>
    private DatabaseConfiguration()
    {
    }

    /// <summary>
    ///     Starts a new PetaPoco build configuration.
    /// </summary>
    /// <returns>An instance of <see cref="IDatabaseBuildConfiguration" /> to form a fluent interface.</returns>
    public static IDatabaseBuildConfiguration Build()
    {
        return new DatabaseConfiguration();
    }

    public void SetSetting(string key, object value)
    {
        // Note: no argument checking because, pref, enduser unlikely and handled by RT/FW
        if (value != null)
            _settings[key] = value;
        else
            _settings.Remove(key);
    }

    public void TryGetSetting<T>(string key, Action<T> setSetting, Action onFail = null)
    {
        // Note: no argument checking because, pref, enduser unlikely and handled by RT/FW
        object setting;
        if (_settings.TryGetValue(key, out setting))
            setSetting((T) setting);
        else if (onFail != null)
            onFail();
    }
}

您还需要 find/replace 以下内容(在同一个 PetaPoco.cs 文件中):

找到:((DatabaseConfiguration.IBuildConfigurationSettings) source).SetSetting(key, value);

替换为:((IBuildConfigurationSettings) source).SetSetting(key, value);

这已在最新版本中修复。版本 5.1.114 或 5.1.109-beta 及更高

有关详细信息,请参阅 PetaPoco issue