Subsonic 亚音速3保存到不同的数据库

Subsonic 亚音速3保存到不同的数据库,subsonic,subsonic3,subsonic-active-record,Subsonic,Subsonic3,Subsonic Active Record,使用亚音速3,我有一个有点奇怪场景的项目。我有一个.net windows服务,它需要连接到主数据库,主数据库存储到其他数据库服务器的连接,还有一组用于处理自动SMS消息的表。然后,我在其他服务器上有相同的数据库(其他数据库上的连接字符串表为空),用于处理其他应用程序的消息 因此,亚音速可以使用连接字符串/提供程序名称选项调用所有数据库 public static List<SMSRequestWithResponseList> SMSRequestListGetAl

使用亚音速3,我有一个有点奇怪场景的项目。我有一个.net windows服务,它需要连接到主数据库,主数据库存储到其他数据库服务器的连接,还有一组用于处理自动SMS消息的表。然后,我在其他服务器上有相同的数据库(其他数据库上的连接字符串表为空),用于处理其他应用程序的消息

因此,亚音速可以使用连接字符串/提供程序名称选项调用所有数据库

        public static List<SMSRequestWithResponseList> SMSRequestListGetAll(string applicationName)
    {
        string connStr = GetConnectionStringByApplicationName(applicationName);

        List<SMSRequestWithResponseList> response = new List<SMSRequestWithResponseList>();

        List<DAL.CDYNESMSRequest> lst = DAL.CDYNESMSRequest.All(connStr, providerName).ToList();

        foreach (DAL.CDYNESMSRequest mitm in lst)
        {
            SMSRequestWithResponseList itm = new SMSRequestWithResponseList(mitm, mitm.CDYNESMSResponses.ToList(), string.Empty);
            response.Add(itm);
        }

        return response;
    }
但它似乎不想更新

                DAL.CDYNESMSRequest itm = DAL.CDYNESMSRequest.SingleOrDefault(x => x.RequestID == requestID, connStr, providerName);
            if (itm != null)
            {
                itm.MessageID = messageGUID;
                itm.MessageCancelled = messageCancelled;
                itm.MessageQueued = messageQueued;
                itm.ReferenceID = messageReferenceID;
                itm.MessageSent = messageSent;
                if (messageSentDT < new DateTime(1753, 1, 1, 0, 0, 0))
                    itm.MessageSentDT = null;
                else
                    itm.MessageSentDT = messageSentDT;
                itm.MessageSMSError = messageSMSError;
                itm.ModifiedDT = dt;
                itm.Save();
            }
DAL.CDYNESMSRequest itm=DAL.CDYNESMSRequest.SingleOrDefault(x=>x.RequestID==RequestID,connStr,providerName);
如果(itm!=null)
{
itm.MessageID=messageGUID;
itm.MessageCancelled=MessageCancelled;
itm.MessageQueued=MessageQueued;
itm.ReferenceID=messageReferenceID;
itm.MessageSent=MessageSent;
if(messagesendt
我正在使用正确数据库中的连接字符串进行调用,但它不会更新记录。 如果我保存不正确,请告诉我。我确实尝试创建一个新的提供商,并将其设置为保存,但它对我咆哮,说它已经有一个开放的连接。
谢谢

不要使用ActiveRecord模式,而是使用SimpleRepository,它允许您设置多个repo,并且可以为每个repo指定连接字符串

// not sure if this is the right constructor or if it's providerName, connectionString
var repo1 = new SimpleRepository(connectionString1, providerName);
var repo2 = new SimpleRepository(connectionString2, providerName);

var item = repo1.Single<Product>(1);

if (repo2.Exists<Product>(x => x.Id == item.Id))
    repo2.Update(item);
else
    repo2.Add(item);
//不确定这是正确的构造函数还是providerName、connectionString
var repo1=新的SimpleRepository(ConnectionString,providerName);
var repo2=新的SimpleRepository(connectionString2,providerName);
var项目=repo1.单个(1);
if(repo2.Exists(x=>x.Id==item.Id))
报告2.更新(项目);
其他的
报告2.增加(项目);
// not sure if this is the right constructor or if it's providerName, connectionString
var repo1 = new SimpleRepository(connectionString1, providerName);
var repo2 = new SimpleRepository(connectionString2, providerName);

var item = repo1.Single<Product>(1);

if (repo2.Exists<Product>(x => x.Id == item.Id))
    repo2.Update(item);
else
    repo2.Add(item);