Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.InvalidCastException: Object must implement IConvertible.
Source Error:
Line 20: public ActionResult Index()
Line 21: {
Line 22: var feeds = (from f in _db.AlertRules.Include("AlertRuleOutages")
Line 23: select f).ToList();
Line 24:
Stack Trace:
[InvalidCastException: Object must implement IConvertible.]
System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) +9508841
MySql.Data.Entity.EFMySqlDataReader.ChangeType(Object sourceValue, Type targetType) +376
MySql.Data.Entity.EFMySqlDataReader.GetValue(Int32 ordinal) +129
System.Data.Common.Internal.Materialization.ErrorHandlingValueReader`1.GetValue(DbDataReader reader, Int32 ordinal) +215
lambda_method(Closure , Shaper ) +468
System.Data.Common.Internal.Materialization.Shaper.HandleEntityAppendOnly(Func`2 constructEntityDelegate, EntityKey entityKey, EntitySet entitySet) +218
lambda_method(Closure , Shaper ) +218
System.Data.Common.Internal.Materialization.Coordinator`1.ReadNextElement(Shaper shaper) +170
System.Data.Common.Internal.Materialization.RowNestedResultEnumerator.MoveNext() +235
System.Data.Common.Internal.Materialization.ObjectQueryNestedEnumerator.TryReadToNextElement() +16
System.Data.Common.Internal.Materialization.ObjectQueryNestedEnumerator.MoveNext() +57
System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) +327
System.Linq.Enumerable.ToList(IEnumerable`1 source) +58
DataBase DDL:
CREATE TABLE alertruleoutage
(
Id INT NOT NULL auto_increment,
RuleId INT NOT NULL,
StartTime TIME NULL DEFAULT 00:00:00,
EndTime TIME NULL DEFAULT 23:59:59,
WeekDays TINYINT NULL,
Count INT NULL,
TimeFrame TIME NULL DEFAULT 01:00:00,
PRIMARY KEY (Id),
KEY RuleId (RuleId),
CONSTRAINT RuleId FOREIGN KEY (RuleId) REFERENCES alertrule (Id)
);
CREATE TABLE alertrule
(
Id INT NOT NULL auto_increment,
FeedId INT NOT NULL,
TemplateId INT NOT NULL,
Enable BIT (1) NULL DEFAULT b'1',
`Rule` VARCHAR (250) NULL,
UpdateDateTime TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (Id),
KEY AlertFeedId (FeedId),
KEY AlertTemplateId (TemplateId),
CONSTRAINT FK_AlertFeedId FOREIGN KEY (FeedId) REFERENCES feed (Id),
CONSTRAINT FK_AlertTemplateId FOREIGN KEY (TemplateId) REFERENCES alertruletemplate (Id)
);
POCO Models:
[Table("AlertRuleOutage")]
public class AlertRuleOutage
{
[Key]
public int Id { get; set; }
public int RuleId { get; set; }
public DateTime? StartTime { get; set; }
public DateTime? EndTime { get; set; }
//public Week WeekDays { get; set; }
public int? Count { get; set; }
public DateTime? TimeFrame { get; set; }
public virtual AlertRule Rule { get; set; }
}
[Table("AlertRule")]
public class AlertRule
{
[Key]
public int Id { get; set; }
public int FeedId { get; set; }
public int TemplateId { get; set; }
public bool? Enable { get; set; }
public string Rule { get; set; }
public DateTime? UpdateDateTime { get; set; }
public virtual Feed Feed { get; set; }
public virtual AlertRuleTemplate Template { get; set; }
public virtual List<AlertRuleOutage> AlertRuleOutages { get; set; }
}
db context:
public DbSet<AlertRule> AlertRules { get; set; }
public DbSet<AlertRuleOutage> AlertRuleOutages { get; set; }
Solution 2 you have to implement IConvertable on the object because Covert. ChangeType() expects IConvertable object. So Convert object knows how to convert given object to the type that you need - even it is the same type.
The IConvertible interface allows conversion of an object to basic data types and allows the conversion methods in the Convert class to use that object. When implementing the IConvertible interface, create your own type-specific methods for each of the supplied conversion methods.
wrong data type in AlertRuleOutage
mysql Time
should map to .NET TimeSpan
:
public TimeSpan? StartTime { get; set; }
see also: http://www.devart.com/dotconnect/mysql/docs/DataTypeMapping.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With