适用于Windows Phone 8.1的Azure移动服务 - 插入现有数据库

时间:2014-05-23 22:40:03

标签: c# azure windows-phone-8

我正在编写一个具有Azure数据库的应用程序。我从未尝试过与Azure相关的东西,所以我对所有东西都是新手。我在互联网和微软文档上找到了一些教程,但我一定有错误,因为它不起作用。所以我在我的数据库中有一个名为Week的表,我在我的代码中创建了一个模型:

[DataContract]
public class Week
{
    //[JsonProperty(PropertyName = "Id")]
    //[DataMember]
    public int Id { get; set; }

    [JsonProperty(PropertyName = "Book")]
    [DataMember]
    public Book CurrentBook { get; set; }

    [JsonProperty(PropertyName = "Is_Read")]
    [DataMember]
    public Boolean IsRead { get; set; }

    [JsonProperty(PropertyName = "Pages_Read")]
    [DataMember]
    public int PagesRead { get; set; }

    [JsonProperty(PropertyName = "Start_Date")]
    [DataMember]
    public DateTime StartDate { get; set; }

    [JsonProperty(PropertyName = "User")]
    [DataMember]
    public User Reader { get; set; }

    [JsonProperty(PropertyName = "Week_Number")]
    [DataMember]
    public int WeekNumber { get; set; }

    public Week(Book currentBook, Boolean isRead, int pagesRead, DateTime startDate, User reader, int weekNumber)
    {
        CurrentBook = currentBook;
        IsRead = isRead;
        PagesRead = pagesRead;
        StartDate = startDate;
        Reader = reader;
        WeekNumber = weekNumber;
    }

    public Week()
    {

    }

    public int GetMonth()
    {
        //TODO: Implement the method.
        return 0;
    }
}

然后我为CRUD操作创建了WeekRepository:

public class WeekRepository : BaseRepository<Week>
{
    private IMobileServiceTable<Week> weekTable;

    public string errorMesage = string.Empty;

    public WeekRepository()
    {
        weekTable = MobileService.GetTable<Week>();
    }


    public async override Task<int> Save(Week entity)
    {
        try
        {
            await weekTable.InsertAsync(entity);
            //    .ContinueWith(t =>
            //{
            //    if (t.IsFaulted)
            //    {
            //        errorMesage = "Insert failed";
            //    }
            //    else
            //    {
            //        errorMesage = "Inserted a new item with id " + entity.Id;                       
            //    }
            //});
        }
        catch (WebException ex)
        {
            errorMesage = ex.Message;
        }
        return entity.Id;
    }

    public override void Update(Week entity)
    {
        return;
    }

    public override Week Load(int bookId)
    {
        var week = weekTable.Where(w => w.IsRead == false).ToListAsync();
        return week.Result.Single();
    }

    public override List<Week> LoadByUserId(int userId)
    {
        return new List<Week>();
    }

    public Week LoadCurrentWeek(int userId)
    {
        return new Week();
    }
}

为了测试它是否有效,我写了一个简单的测试:

 [TestMethod]
    public void ShouldSaveWeekToTheDB()
    {
        //ARANGE
        Week weekTestEntity = new Week(null, false, 10, new DateTime(), null, 1);

        //ACT
        int id = weekRepository.Save(weekTestEntity).Result;

        //ASSERT
        var savedItem = weekRepository.Load(1);
        Assert.AreEqual(false, savedItem.IsRead);
    }

但是,InsertAsync()会抛出异常 - Not Found。我不知道我做错了什么,因为从互联网上的资料中可以看出这似乎很简单。

如果你能帮助我,我将非常感激! 提前谢谢!

最诚挚的问候, 罗马。

0 个答案:

没有答案