Ich erhalte die folgende Fehlermeldung, ich habe den Code und die Verbindungszeichenfolge eingefügt. Ich benutze PetaPoco zum ersten Mal.
Circular base class dependency involving 'PetaPoco.DatabaseConfiguration' and 'PetaPoco.DatabaseConfiguration.IBuildConfigurationSettings'
Es folgt die Verbindungszeichenfolge:
<add name="PriceCheckString" connectionString="Data Source=.;Initial Catalog=PriceCheck;Integrated Security=SSPI;"
providerName="System.Data.SqlClient"/>
Es folgt die Codezeile
Database priceCheck = new Database("PriceCheckString");
var ItemPrice = priceCheck.Query<ItemPrice>("SELECT * FROM itemPrice");
2 Antworten
Ich hatte das gleiche Problem und konnte es lösen. Sie müssen die Schnittstellendeklaration außerhalb der Datenbankkonfigurationsklasse verschieben.
Ersetzen Sie in PetaPoco.cs Ihre DatabaseConfiguration-Klassendeklaration durch den folgenden Code:
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();
}
}
Sie müssen außerdem Folgendes suchen / ersetzen (in derselben PetaPoco.cs-Datei):
Find: ((DatabaseConfiguration.IBuildConfigurationSettings) source) .SetSetting (Schlüssel, Wert);
Ersetzen durch: ((IBuildConfigurationSettings) Quelle) .SetSetting (Schlüssel, Wert);
Dies wurde in der neuesten Version behoben. Versionen 5.1.114 oder 5.1.109-beta und höher
Weitere Informationen finden Sie im PetaPoco-Problem.
Neue Fragen
.net
NICHT für Fragen zu .NET Core verwenden - verwenden Sie stattdessen [.net-core]. Das .NET Framework ist ein Software-Framework, das hauptsächlich für das Microsoft Windows-Betriebssystem entwickelt wurde. Es enthält eine Implementierung der Basisklassenbibliothek, der Common Language Runtime (allgemein als CLR bezeichnet), des Common Type System (allgemein als CTS bezeichnet) und der Dynamic Language Runtime. Es unterstützt viele Programmiersprachen, einschließlich C #, VB.NET, F # und C ++ / CLI.