2013-08-27 63 views
0

我是C#的初學者程序員,所以我認爲我的問題的解決方案可能很簡單,但經過幾天的尋找之後,我還沒有找到任何對我有用的東西。WP7後臺代理數據庫訪問

我有一個WP7應用程序,其中包含使用SQL CE創建的數據庫。

CLASS PorniBD.cs

using System; 
using System.Net; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Documents; 
using System.Windows.Ink; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Animation; 
using System.Windows.Shapes; 
using System.Data.Linq.Mapping; 

namespace PhoneClassLibrary1 
{ 
    [Table(Name = "Papilleros")] 
    public class PorniBD 
    { 
     [Column(IsPrimaryKey = true, IsDbGenerated = true)] 
     public int Id { get; set; } 
     [Column(CanBeNull = false)] 
     public String Nombre { get; set; } 
     [Column(CanBeNull = false)] 
     public String FechaNac { get; set; } 
     [Column(CanBeNull = false)] 
     public Boolean Activo { get; set; } 
     [Column(CanBeNull = false)] 
     public String Icono { get; set; } 
    } 
} 

CLASS PorniContext.cs

using System; 
using System.Net; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Documents; 
using System.Windows.Ink; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Animation; 
using System.Windows.Shapes; 
using System.Data.Linq.Mapping; 
using System.Data.Linq; 

namespace PhoneClassLibrary1 
{ 
    public class PorniContext : DataContext 
    { 
     public PorniContext(string connectionString) : base(connectionString) 
     { 
      // 
     } 

     public Table<PorniBD> Papilleros 
     { 
      get 
      { 
       return this.GetTable<PorniBD>(); 
      } 
     } 
    } 
} 

我的應用程序在另一個項目中創建就像我在本頁面已經學到了後臺代理:Link

現在,我需要從後臺代理讀取應用程序數據庫,並且此類包含以下OnInvoke void:

protected override void OnInvoke(ScheduledTask task) 
     { 
      List<PorniBD> listapapilleros = new List<PorniBD>(); 
      using (PorniContext basedatos = new PorniContext("Data Source='isostore:/basedatos.sdf'")) 
      { 
       listapornis = basedatos.Papilleros.ToList(); 
      } 

      // Launch a toast to show that the agent is running. 
      // The toast will not be shown if the foreground application is running. 

      ScheduledActionService.LaunchForTest(task.Name, TimeSpan.FromSeconds(10)); 
      NotifyComplete(); 
     } 

但它是不可能的,因爲數據源中分離是在每一個項目(我認爲)不同,我想,這是必要的修復更多的東西......

非常感謝你們的幫助,對不起,如果我的英語級別是使我的解釋有點難以理解...

回答

1

只需創建一個類型爲「Windows Phone類庫」的第三個項目。將數據庫代碼移到第三個項目中,然後從主項目和後臺代理項目中引用它。

+0

感謝您的回答KooKiz。但是,當我創建第三個項目時,在使用OnInvoke行void時出現問題。這個錯誤與DataContext的ToList()函數有關:不可能調用它(我不知道爲什麼,因爲當我從應用程序項目使用toList()時,調用正確地工作)。 (請參閱原始消息中更新的代碼) – user2723183

+0

@ user2723183確保您的文件上方有'using System.Linq'行 –