.net 循环基类
我得到以下错误,我粘贴了代码和连接字符串。我第一次使用PetaPoco.net 循环基类,.net,orm,petapoco,.net,Orm,Petapoco,我得到以下错误,我粘贴了代码和连接字符串。我第一次使用PetaPoco Circular base class dependency involving 'PetaPoco.DatabaseConfiguration' and 'PetaPoco.DatabaseConfiguration.IBuildConfigurationSettings' 以下是连接字符串: <add name="PriceCheckString" connectionString="Data Source
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");
Database priceCheck=新数据库(“PriceCheckString”);
var ItemPrice=priceCheck.Query(“从ItemPrice中选择*);
我也有同样的问题,并且能够解决。您必须将接口声明移到DatabaseConfiguration类之外
在PetaPoco.cs中,用以下代码替换DatabaseConfiguration类声明:
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();
}
}
公共接口IBuildConfiguration设置
{
///
///根据指定的键设置设置。
///
///设置的关键。
///设置的值。
无效设置(字符串键、对象值);
///
///尝试获取设置并调用以设置值(如果找到)。
///
///设置类型。
///设置的关键。
///设置回调。
///on fail回调,在无法设置任何设置时调用。
void TryGetSetting(字符串键,动作设置,动作失败=null);
}
///
///支持流畅配置的帮助器类。
///
公共类数据库配置:IDatabaseBuildConfiguration、IBuildConfiguration设置、IHideObjectMethods
{
专用只读IDictionary _settings=new Dictionary();
///
///私有构造函数强制使用静态生成方法。
///
专用数据库配置()
{
}
///
///启动新的PetaPoco构建配置。
///
///的实例,以形成流畅的界面。
公共静态IDatabaseBuildConfiguration生成()
{
返回新数据库配置();
}
公共void设置(字符串键、对象值)
{
//注意:没有参数检查,因为,pref,enduser不太可能由RT/FW处理
if(值!=null)
_设置[键]=值;
其他的
_设置。删除(键);
}
public void TryGetSetting(字符串键,操作设置,操作失败=null)
{
//注意:没有参数检查,因为,pref,enduser不太可能由RT/FW处理
对象设置;
如果(_settings.TryGetValue(键,输出设置))
设置设置((T)设置);
else if(onFail!=null)
onFail();
}
}
您还需要查找/替换以下内容(在同一PetaPoco.cs文件中):
查找:((DatabaseConfiguration.IBuildConfigurationSettings)源).SetSetting(键,值)
替换为:((IBILDConfigurationSettings)source).SetSetting(键,值) 这在最新版本中已修复。版本5.1.114或5.1.109-beta及更高版本
有关更多详细信息,请参阅。。我发现另一个对DatabaseConfiguration.IBuildConfiguration设置的引用也需要删除类限定符。